2013-07-01 34 views
2

我已经阅读了关于GO命令的内容,但是我还没有看到对以下问题的明确答案。GO命令在SQL脚本中做了什么?

比方说,我请从SSMS以下一组命令:

INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017882) 
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017883) 
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017884) 
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017885) 

这是如何不同于:

INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017882) 
GO 
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017883) 
GO 
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017884) 
GO 
INSERT INTO [dbo].[hwr] ([wr_id]) VALUES (990017885) 
GO 

换句话说,就是“GO”命令实际完成什么在这个情况下?如果是这样,什么?

非常感谢, 马特

回答

3

GO命令实际上不是一个SQL命令,而是一个SSMS命令。它告诉SSMS将以前的命令作为批处理发送。

所以区别在于你的第一个代码会一次发送全部代码,而第二个代码将分四次发送。

+0

而我认为这已经在这里得到了解答:http://stackoverflow.com/q/2668529/426422 –

+0

确实。 @MikeCheel! –

+0

我不知道它有一个计数参数。 http://msdn.microsoft.com/en-us/library/ms188037(v=sql.105).aspx –

3

GO是分批分离器

某些操作要求它是在批处理(CREATE PROCEDURE)例如第一行。如果你使用GO,可以随后在1个文件中的所有命令

您也可以声明相同的变量,如果它是在其自己的批量

例如

declare @i int = 5 
select @i 
go 
declare @i int = 5 
select @i 
go 

取出去,它将炸毁

你也可以去后面添加一个数字,它会执行批处理,很多时候,例如

declare @i int = 5 
select @i 
go 4 
+0

Yup ... Kaboom !! –

相关问题