/ / Common Table Expression dans une boucle SQL WHILE? - sql, sql-server-2008

Expression de table commune dans une boucle SQL WHILE? - sql, sql-server-2008

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 № 1

Vous 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.