GO在SQL Server Management Studio和Transact SQL中的用途是什么?
当我使用右键单击“脚本为”菜单创建查询时,SQL Server Management Studio始终插入GO命令。为什么? GO实际上做了什么?GO在SQL Server Management Studio和Transact SQL中的用途是什么?
GO命令不是Transact-SQL语句,而是包含SQL Server Management Studio代码编辑器在内的多个MS实用程序可识别的特殊命令。
GO命令用于将SQL命令组合成一起发送到服务器的批处理。批处理中包含的命令,即自上次GO命令或会话开始以来的一组命令,必须在逻辑上一致。例如,您不能在一个批次中定义变量,然后在另一个批次中使用它,因为变量的范围仅限于其定义的批次。请参阅http://msdn.microsoft.com/en-us/library/ms188037.aspx。
在什么情况下使用'GO'来分配东西实际上有用? – nicodemus13 2013-03-21 11:06:22
@ nicodemus13请参阅http://stackoverflow.com/questions/20711326/sql-server-what-is-go-good-for – 2013-12-20 20:35:32
这应该是被接受的答案。目前接受的答案甚至不能回答这个问题。 – Zack 2015-04-13 15:23:17
在我的辩护中,我在提交问题之前查看了建议的重复内容,并且您的示例没有显示出来,也不是真的重复,尽管答案是适用的。 – tvanfosson 2010-02-19 20:20:51
在这里很难搜索“GO”:-) – gbn 2010-02-19 20:22:38
Use herDatabase
GO ;
代码表示执行GO
标记上面的说明。 我的默认数据库MYDATABASE,所以不是使用myDatabase GO
,使当前查询使用herDatabase
这是GO的魔力。
SELECT 'Go'
Go 10
语法:转到INT (BatchNumber)
BatchNumber:的时间没有发生
看起来简单,它可能会导致你Spaghetti如果你的代码更深。
只是要添加到现有的答案,当您创建视图时,您必须使用go
将这些命令分成批号,否则您将收到错误'CREATE VIEW' must be the only statement in the batch
。因此,举例来说,你不能没有go
create view MyView1 as
select Id,Name from table1
go
create view MyView2 as
select Id,Name from table1
go
select * from MyView1
select * from MyView2
重复执行下面的SQL脚本 - http://stackoverflow.com/questions/971177/using-go-within-a-transaction – ChrisF 2010-02-19 20:21:44
@ ChrisF--这不是重复的,尽管接受的答案也回答了这个问题。这个问题是关于在一个事务中使用“GO” - 事实证明它根本不是一个真正的SQL命令。这个问题更一般化,并尝试为SSMS中关于GO命令的问题提供确定的答案。 – tvanfosson 2010-02-19 20:31:01
也看看这个链接:[什么是批处理语句好?](http://stackoverflow.com/questions/20711326/sql-server-what-are-batching-statements-ie-using-go-good -for) – 2013-12-20 20:38:37