首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SQL Server中,什么时候应该使用GO,什么时候应该使用分号?

在SQL Server中,什么时候应该使用GO,什么时候应该使用分号?
EN

Stack Overflow用户
提问于 2010-09-13 22:03:19
回答 4查看 69.3K关注 0票数 115

我一直不知道什么时候应该在命令后使用GO关键字,以及在命令的末尾是否需要分号。有什么区别,为什么/什么时候我应该使用它们?

当我在SQL Server Management Studio中运行Generate-script时,它似乎到处使用GO,但没有使用分号。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-13 22:06:20

GO只与GO相关-它不是实际的Transact SQL,它只是告诉SSMS在各个批处理中的每个SSMS之间按顺序发送SQL语句。

;是一个SQL语句分隔符,但在大多数情况下,引擎可以解释语句的中断位置。

主要的例外,以及最常使用;的地方是在常用表表达式语句之前。

票数 104
EN

Stack Overflow用户

发布于 2010-09-13 22:14:16

Go是一个批次分隔符。这意味着该批处理中的所有内容对于该特定批处理都是本地的。

变量、表变量等的任何声明都不会跨越GO语句。

#Temp表是连接的本地表,因此它们跨越了GO语句。

分号

分号是语句的结束符。这纯粹是用来标识特定语句已经结束。

在大多数情况下,语句语法本身就足以确定语句的结尾。

然而,CTE要求WITH是第一个语句,所以在WITH之前需要一个分号。

票数 42
EN

Stack Overflow用户

发布于 2010-09-13 22:10:22

应该使用分号来终止每条SQL语句。这是在SQL标准中定义的,

当然,SQL Server经常允许您省略语句结束符,但是为什么要养成坏习惯呢?

正如其他人指出的那样,公用表表达式(CTE)之前的语句必须以分号结尾。因此,从那些还没有完全接受分号终止符的人们中,我们看到了以下内容:

代码语言:javascript
复制
;WITH ...

我觉得这看起来很奇怪。我认为在一个在线论坛中,当你不能判断它将被粘贴到的代码的质量时,它是有意义的。

此外,MERGE语句必须以分号终止。你在这里看到模式了吗?这些是TSQL中的几个新功能,它们严格遵循SQL标准。看起来SQL Server团队正在走强制使用分号终止符的道路。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3701147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档