Comment utiliser une expression de table commune (CTE) dans une boucle while? Ce qui suit donne des erreurs sur l'instruction "while" et la référence au "cte":
Erreurs: (1) Syntaxe incorrecte près de WHILE (2) Nom d'objet non valide "cte"
WITH cte AS (
SELECT
t.employee
FROM EmpTable as t
WHERE (t.status = 3)
)
WHILE ((SELECT COUNT(*) FROM cte) <> 0)
--more stuff here
Réponses:
1 pour la réponse № 1Vous ne pouvez pas faire cela. La portée du CTE n’est que celle de la requête suivante. En réalité, il s’agit en réalité d’une partie seulement de la requête qu’il précède. Tout comme une vue en ligne (sous-requête) fait partie d'une requête plus grande.
Dans votre cas, vous "d besoin de revenir aux bonnes vieilles tables temporaires, les variables de table, etc.