2013-07-01 61 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 !! –

相關問題