首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带GO语句和不带GO语句的数据操作语言

带GO语句和不带GO语句的数据操作语言
EN

Stack Overflow用户
提问于 2012-02-16 05:42:55
回答 3查看 328关注 0票数 0

可能重复:

What is the use of GO in SQL Server Management Studio?

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

案例-1无GO

代码语言:javascript
复制
Update Table
Set Columns = 'Value'
Where Id = 1

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

带有GO的Case -2

代码语言:javascript
复制
Update Table
Set Columns = 'Value'
Where Id = 1

GO

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

查询

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-16 06:10:01

我得到了存储过程方面的差异。

案例1-当Select2不是部件并显式地与此存储过程分离时,

代码语言:javascript
复制
Create proc abc
as
select 1

GO

select 2

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

代码语言:javascript
复制
Create proc abc
as
select 1

select 2

在案例2中,该语言的定义如下。

代码语言:javascript
复制
Create proc abc
as
select 1

select 2
票数 0
EN

Stack Overflow用户

发布于 2012-02-16 05:54:51

唯一的区别--第一次查询自第二次查询以来--在第二轮中运行。GO分隔符不是服务器命令,它只是一个批处理分隔符,应该由客户端处理。

这意味着第一次查询的性能更好,因为有一次查询。

票数 0
EN

Stack Overflow用户

发布于 2012-02-16 06:01:48

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

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

GO不是Transact-SQL语句;它是sqlcmd和osql实用程序以及编辑器所识别的命令。

Server实用程序将GO解释为将当前批Transact-SQL语句发送到Server实例的信号。当前一批语句由自上次运行以来输入的所有语句组成,如果这是第一次执行,则自特设会话或脚本开始以来输入的所有语句。

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

用户必须遵守批次规则。例如,批处理中第一条语句之后存储过程的任何执行都必须包括EXECUTE关键字。本地(用户定义的)变量的作用域仅限于批处理,不能在GO命令之后引用。。

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

https://stackoverflow.com/questions/9306144

复制
相关文章

相似问题

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