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 (...),会引起不必要的错误原文地址:http://jameschen.blog.违规广告.com/985250/214951
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-617283/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16436858/viewspace-617283/