关于CTE的一些问题

Md cte 的语法挺奇怪的

1:如果with 语句不在 存储过程的第一句,必须用分号分割<如果在第一句,也可以用分号分割>

2: 一个存储过程只能有一个with cte语句,如果要定义多个cte,则用逗号分割

;With cte1(…) as (…) < 这里无论用什么分割都不行 > with cte2(…) as(…) 这样错误
必须这样写
;< 如果 with 不是第一句 > with cte1(…) as (…), cte2(…) as (…)

3. cte定义后必须马上跟 select …. From 这样的语句,哪怕from CTE无关(这点最变态)

 以下语句是错误的

;with cte1(...) as (...);
print 'test';
以下语句是正确的
;with cte1(...) as (...);
select top 1 * from cte1;
print 'ok';
4. 最后1点,CTE的名字慎用#,比如 with #cte1 (...) as (...),会引起不必要的错误

本文出自 “飞鱼岛主” 博客,转载请与作者联系!

你可能感兴趣的:(职场,sqlserver,休闲,CTE)