用习惯了oracle后,习惯在每个语句结束后以(;)结尾。
但是在sql中有哪些情况是必须使用分号的呢?
从一些英文文献中发现:
There are two situations in which you must use the semicolon.
The first situation is where you use a Common Table Expression (CTE),
and the CTE is not the first statement in the batch.
The second is where you issue a Service broker statement
and the Service broker statement is not the first statement in the batch.
我们来解释一下上面的两种情况:
第一种:
declare @t table(id int)
insert into @t
select 1 union
3 union
4
;with cr as
(
select * from @t
)
* from cr
/*
id
-----------
1
3
4
*/
这里with前面的分号是必须要有的。
第二种:
--创建主密钥:
create master key encryption by password = 'Pass.word';
--发送和接收
waitfor receive top(1)
@message_type = message_type_name,
@message_body = message_body,"serif"; mso-no-proof: yes;'> @dialog = conversation_handle
from dbo.InventoryQueue
), timeout 2000;
为了确保分析器能知道SEND和RECEIVE正是在开始一个新命令,SEND或RECEIVE之前的命令必须以
分号(;)结束.
@【叶子】http://blog.csdn.net/maco_wang 原创作品,转贴请注明作者和出处,留此信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。