微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于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 (...),会引起不必要的错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐