2 回答

TA貢獻1880條經驗 獲得超4個贊
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 pubs
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 實用工具中執行特定語句,或生成 Transact-SQL 語句腳本在 SQL Server 實用工具中運行,用 GO 來標識批處理的結束。
如果基于 DB-Library、ODBC 或 OLE DB APIs 的應用程序試圖執行 GO 命令時會收到語法錯誤。SQL Server 實用工具永遠不會向服務器發送 GO 命令。
權限
GO 是一個不需權限的實用工具命令??梢杂扇魏斡脩魣绦小?br/>
示例
下面的示例創建兩個批處理。第一個批處理只包含一條 USE pubs 語句,用于設置數據庫上下文。剩下的語句使用了一個局部變量,因此所有的局部變量聲明必須在一個批處理中。這一點可通過在最后一條引用此變量的語句之后才使用 GO 命令來做到。
USE pubs
GO
DECLARE @NmbrAuthors int
SELECT @NmbrAuthors = COUNT(*)
FROM authors
PRINT 'The number of authors as of ' +
CAST(GETDATE() AS char(20)) + ' is ' +
CAST(@NmbrAuthors AS char (10))
GO
- 2 回答
- 0 關注
- 1541 瀏覽
添加回答
舉報