带有和没有GO语句的数据操作语言

时间:2012-02-16 05:42:56

标签: sql sql-server tsql

  

可能重复:
  What is the use of GO in SQL Server Management Studio?

我有一些数据操作语言,如下所示。

案例 - 1没有GO

Update Table
Set Columns = 'Value'
Where Id = 1

Update Table
Set Columns = 'Value'
Where Id = 2

案例 - 2使用GO

Update Table
Set Columns = 'Value'
Where Id = 1

GO

Update Table
Set Columns = 'Value'
Where Id = 2

查询

哪个应该是首选的,为什么?

3 个答案:

答案 0 :(得分:0)

唯一的区别 - 第一个查询从第二个开始在一个回合中运行 - 在转弯时。 GO分隔符不是服务器命令,它只是一个批处理分隔符,应由客户端处理。

这意味着 - 由于1回合查询,第1次查询效果更好

答案 1 :(得分:0)

请参阅下面的网址,它可能对您有帮助。

http://msdn.microsoft.com/en-us/library/ms188037.aspx声明:

  

GO不是Transact-SQL语句;这是一个被公认的命令   sqlcmd和osql实用程序以及SQL Server Management Studio代码   编辑器。

     

SQL Server实用程序将GO解释为应发送的信号   当前批处理的Transact-SQL语句到SQL的一个实例   服务器。当前批次的陈述由所有陈述组成   自上次GO开始,或自特别会议开始以来或   脚本,如果这是第一个GO。

     

Transact-SQL语句不能与GO命令占用同一行。   但是,该行可以包含注释。

     

用户必须遵守批次规则。例如,任何执行   批处理中的第一个语句必须包含后的存储过程   EXECUTE关键字。本地(用户定义)变量的范围是   限制为批处理,并且在GO命令后无法引用。

答案 2 :(得分:0)

我在存储过程方面存在差异。

案例1 - 当选择2不是该部分且明确与该存储过程分离时

Create proc abc
as
select 1

GO

select 2

案例2 - 当选择2不是存储过程的一部分时,由于缺少GO而错误地成为存储过程的一部分

Create proc abc
as
select 1

select 2

在案例2中,语言的定义变为以下。

Create proc abc
as
select 1

select 2