SQL WHILE循环中的公用表表达式?

时间:2011-09-28 16:03:05

标签: sql sql-server-2008

如何在while循环中使用公用表表达式(CTE)?以下是“while”语句和“cte”引用错误:

错误:(1)WHILE附近的语法不正确(2)无效的对象名称'cte'

WITH cte AS (
   SELECT 
     t.employee
   FROM  EmpTable as t
   WHERE (t.status = 3) 
)

WHILE ((SELECT COUNT(*) FROM cte) <> 0)
--more stuff here

1 个答案:

答案 0 :(得分:1)

你做不到。 CTE的范围仅适用于下一个查询。它实际上只是它之前的查询的一部分。就像内联视图(子查询)是更大查询的一部分一样。

在你的情况下,你需要回到旧的临时表,表变量等。