我一直不知道什么时候应该在命令后使用GO关键字,以及在命令的末尾是否需要分号。有什么区别,为什么/什么时候我应该使用它们?
当我在SQL Server Management Studio中运行Generate-script时,它似乎到处使用GO,但没有使用分号。
发布于 2010-09-13 22:06:20
GO
只与GO
相关-它不是实际的Transact SQL,它只是告诉SSMS在各个批处理中的每个SSMS之间按顺序发送SQL语句。
;
是一个SQL语句分隔符,但在大多数情况下,引擎可以解释语句的中断位置。
主要的例外,以及最常使用;
的地方是在常用表表达式语句之前。
发布于 2010-09-13 22:14:16
去
Go是一个批次分隔符。这意味着该批处理中的所有内容对于该特定批处理都是本地的。
变量、表变量等的任何声明都不会跨越GO
语句。
#Temp表是连接的本地表,因此它们跨越了GO语句。
分号
分号是语句的结束符。这纯粹是用来标识特定语句已经结束。
在大多数情况下,语句语法本身就足以确定语句的结尾。
然而,CTE要求WITH是第一个语句,所以在WITH之前需要一个分号。
发布于 2010-09-13 22:10:22
应该使用分号来终止每条SQL语句。这是在SQL标准中定义的,
当然,SQL Server经常允许您省略语句结束符,但是为什么要养成坏习惯呢?
正如其他人指出的那样,公用表表达式(CTE)之前的语句必须以分号结尾。因此,从那些还没有完全接受分号终止符的人们中,我们看到了以下内容:
;WITH ...
我觉得这看起来很奇怪。我认为在一个在线论坛中,当你不能判断它将被粘贴到的代码的质量时,它是有意义的。
此外,MERGE
语句必须以分号终止。你在这里看到模式了吗?这些是TSQL中的几个新功能,它们严格遵循SQL标准。看起来SQL Server团队正在走强制使用分号终止符的道路。
https://stackoverflow.com/questions/3701147
复制相似问题