Md cte
的语法挺奇怪的
1:如果with 语句不在 存储过程的第一句,必须用分号分割<如果在第一句,也可以用分号分割>
2: 一个存储过程只能有一个with cte语句,如果要定义多个cte,则用逗号分割
必须这样写
;<如果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 (...),会引起不必要的错误
必须这样写
;<如果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] 举报,一经查实,本站将立刻删除。