我如何在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
我如何在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
你不能这样做。CTE的作用域仅限于下一个查询。实际上,它只是在其前面的查询的一部分。就像内联视图(子查询)是较大查询的一部分一样。
在您的情况下,您需要回到老式的临时表、表变量等。