GO在SQL Server Management Studio和Transact SQL中的用途是什么?

GO在SQL Server Management Studio和Transact SQL中的用途是什么?

问题描述:

当我使用右键单击“脚本为”菜单创建查询时,SQL Server Management Studio始终插入GO命令。为什么? GO实际上做了什么?GO在SQL Server Management Studio和Transact SQL中的用途是什么?

+2

重复执行下面的SQL脚本 - http://stackoverflow.com/questions/971177/using-go-within-a-transaction – ChrisF 2010-02-19 20:21:44

+23

@ ChrisF--这不是重复的,尽管接受的答案也回答了这个问题。这个问题是关于在一个事务中使用“GO” - 事实证明它根本不是一个真正的SQL命令。这个问题更一般化,并尝试为SSMS中关于GO命令的问题提供确定的答案。 – tvanfosson 2010-02-19 20:31:01

+2

也看看这个链接:[什么是批处理语句好?](http://stackoverflow.com/questions/20711326/sql-server-what-are-batching-statements-ie-using-go-good -for) – 2013-12-20 20:38:37

这是一个批处理终止,但是,您可以变化它任何你想要的 alt text

+56

gbn让它选择并看看会发生什么:-) – SQLMenace 2010-02-19 21:09:16

+41

@SQLMenace就是你从哪里得到你的名字......;) – enderland 2013-10-07 16:08:05

+13

这是因为我的名字是丹尼斯;-) – SQLMenace 2013-10-07 16:43:27

GO命令不是Transact-SQL语句,而是包含SQL Server Management Studio代码编辑器在内的多个MS实用程序可识别的特殊命令。

GO命令用于将SQL命令组合成一起发送到服务器的批处理。批处理中包含的命令,即自上次GO命令或会话开始以来的一组命令,必须在逻辑上一致。例如,您不能在一个批次中定义变量,然后在另一个批次中使用它,因为变量的范围仅限于其定义的批次。请参阅http://msdn.microsoft.com/en-us/library/ms188037.aspx

+20

在什么情况下使用'GO'来分配东西实际上有用? – nicodemus13 2013-03-21 11:06:22

+2

@ nicodemus13请参阅http://stackoverflow.com/questions/20711326/sql-server-what-is-go-good-for – 2013-12-20 20:35:32

+29

这应该是被接受的答案。目前接受的答案甚至不能回答这个问题。 – Zack 2015-04-13 15:23:17

GO不是SQL关键字。

这是由客户端工具(如SSMS)使用批处理分隔打破整个脚本成批次

前几次回答... example 1

+4

在我的辩护中,我在提交问题之前查看了建议的重复内容,并且您的示例没有显示出来,也不是真的重复,尽管答案是适用的。 – tvanfosson 2010-02-19 20:20:51

+16

在这里很难搜索“GO”:-) – gbn 2010-02-19 20:22:38

Use herDatabase 
GO ; 

代码表示执行GO标记上面的说明。 我的默认数据库MYDATABASE,所以不是使用myDatabase GO,使当前查询使用herDatabase

由于管理Studio 2005中,似乎可以用GOint参数,如:

INSERT INTO mytable DEFAULT VALUES 
GO 10 

以上将插入10行到mytable。一般来说,GO将执行相关的sql命令n次。

+48

+1这非常有用! – 2010-06-22 12:06:52

+4

很好的信息,谢谢 – Salim 2014-08-06 19:49:35

+2

是不知道,爽! :d – alamin 2015-11-12 06:53:20

这是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