2010-02-19 239 views
259

當我使用右鍵單擊「腳本爲」菜單創建查詢時,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

回答

241

這是一個批處理終止,但是,您可以變化它任何你想要的 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

158

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

19

GO不是SQL關鍵字。

這是由客戶端工具(如SSMS)使用批處理分隔打破整個腳本成批次

前幾次回答... example 1

+4

在我的辯護中,我在提交問題之前查看了建議的重複內容,並且您的示例沒有顯示出來,也不是真的重複,儘管答案是適用的。 – tvanfosson 2010-02-19 20:20:51

+16

在這裏很難搜索「GO」:-) – gbn 2010-02-19 20:22:38

5
Use herDatabase 
GO ; 

代碼表示執行GO標記上面的說明。 我的默認數據庫MYDATABASE,所以不是使用myDatabase GO,使當前查詢使用herDatabase

233

由於管理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

-2

這是GO的魔力。

SELECT 'Go' 
Go 10 

語法:轉到INT (BatchNumber)

BatchNumber:的時間沒有發生

看起來簡單,它可能會導致你Spaghetti如果你的代碼更深。

5

只是要添加到現有的答案,當您創建視圖時,您必須使用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 
相關問題