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

Sqlserver 中必须使用分号的两种情况--【叶子】

用习惯了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;

 

为了确保分析器能知道SENDRECEIVE正是在开始一个新命令,SENDRECEIVE之前的命令必须以

分号(;)结束.

 

@【叶子】http://blog.csdn.net/maco_wang 原创作品,转贴请注明作者和出处,留此信息。

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

相关推荐