ZT
記錄下
Transact-SQL 參考
GO
用訊號通知 Microsoft SQL Server 公用程式一批 Transact-SQL 陳述式的結束。
文法
GO
注釋
GO 不是 Transact-SQL 陳述式;而是可為 osql 和 isql 工具 + 生產力及 SQL Server 查詢分析器識別的命令。
SQL Server 公用程式將 GO 解釋為應將當前的 Transact-SQL 批處理語句發送給 SQL Server 的訊號。當前批處理語句是自上一 GO 命令後輸入的所有語句,若是第一條 GO 命令,則是從特殊會話或指令碼的開始處到這條 GO 命令之間的所有語句。SQL 查詢分析器和 osql 及 isql 命令提示工具 + 生產力執行 GO 命令的方式不同。有關更多資訊,請參見 osql 工具 + 生產力、isql 工具 + 生產力和 SQL 查詢分析器。
GO 命令和Transact-SQL 陳述式不可在同一行上。但在 GO 命令列中可包含注釋。
使用者必須遵照使用批處理的規則。例如,在批處理中的第一條語句後執行任何預存程序必須包含 EXECUTE 關鍵字。局部(使用者定義)變數的範圍限制在一個批處理中,不可在 GO 命令後引用。
USE pubsGODECLARE @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 @MyMsgGOSELECT @@VERSION;-- Yields an error: Must be EXEC sp_who if not first statement in-- batch.sp_whoGO
SQL Server 應用程式可將多條 Transact-SQL 陳述式作為一個批處理髮給 SQL Server 去執行。在此批處理中的語句編譯成一個執行計畫。程式員在 SQL Server 公用程式中執行特定語句,或產生 Transact-SQL 陳述式指令碼在 SQL Server 公用程式中運行,用 GO 來標識批處理的結束。
如果基於 DB-Library、ODBC 或 OLE DB APIs 的應用程式試圖執行 GO 命令時會收到語法錯誤。SQL Server 公用程式永遠不會向伺服器發送 GO 命令。
許可權
GO 是一個不需許可權的工具 + 生產力命令。可以由任何使用者執行。
樣本
下面的樣本建立兩個批處理。第一個批處理只包含一條 USE pubs 語句,用於設定資料庫上下文。剩下的語句使用了一個局部變數,因此所有的局部變數聲明必須在一個批處理中。這一點可通過在最後一條引用此變數的語句之後才使用 GO 命令來做到。
USE pubsGODECLARE @NmbrAuthors intSELECT @NmbrAuthors = COUNT(*)FROM authorsPRINT 'The number of authors as of ' +CAST(GETDATE() AS char(20)) + ' is ' +CAST(@NmbrAuthors AS char (10))GO