GO (Transact-SQL)
作為 SQL Server 公用程式中 Transact-SQL 陳述式批次結束的信號。
語法
GO [count]
引數
- count
這是正整數。在 GO 之前的批次將會執行指定的次數。
備註
GO 不是 Transact-SQL 陳述式;它是 sqlcmd 和 osql 公用程式與 SQL Server Management Studio 程式碼編輯器都能夠辨識的命令。
SQL Server 公用程式會將 GO 解譯成應該將目前的 Transact-SQL 陳述式批次傳送給 SQL Server 執行個體的信號。目前的陳述式批次由在上一個 GO 之後輸入的所有陳述式組成;如果是第一個 GO,便是從特定工作階段或指令碼開始之後輸入的所有陳述式組成。
Transact-SQL 陳述式不能和 GO 命令佔用同一行。不過,這一行可包含註解。
使用者必須遵照批次的規則。例如,在批次內第一個陳述式之後,執行預存程序都必須包括 EXECUTE 關鍵字。本機 (使用者自訂) 變數的範圍只限於批次,在 GO 命令之後,便不能參考它。
USE AdventureWorks;
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.
-- Yields an error because @MyMsg not declared in this batch.
PRINT @MyMsg
GO
SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first statement in
-- batch.
sp_who
GO
SQL Server 應用程式可以將多個 Transact-SQL 陳述式傳給 SQL Server 執行個體,以利用批次方式來執行它們。之後,會將批次中的這些陳述式編譯成單一執行計畫。在 SQL Server 公用程式內執行特定陳述式的程式設計人員,或建立要在 SQL Server 公用程式中執行的 Transact-SQL 陳述式指令碼之程式設計人員,都利用 GO 來作為批次結束的信號。
如果以 ODBC 或 OLE DB API 為基礎的應用程式試圖執行 GO 命令,就會收到語法錯誤。SQL Server 公用程式永遠不會將 GO 命令傳給伺服器。
權限
GO 是不需要任何權限的公用程式命令。任何使用者都可以執行它。
範例
下列範例會建立兩個批次。第一個批次只包含用來設定資料庫內容的 USEAdventureWorks 陳述式。其餘陳述式使用本機變數。因此,所有本機變數宣告都必須分組在單一批次中。方式是將 GO 命令放在參考變數的最後一個陳述式之後。
USE AdventureWorks;
GO
DECLARE @NmbrContacts int
SELECT @NmbrContacts = COUNT(*)
FROM Person.Contact
PRINT 'The number of contacts as of ' +
CAST(GETDATE() AS char(20)) + ' is ' +
CAST(@NmbrContacts AS char (10))
GO