2 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
Transact-SQL 參考
GO
用信號(hào)通知 Microsoft? SQL Server? 實(shí)用工具一批 Transact-SQL 語句的結(jié)束。
語法
GO
注釋
GO 不是 Transact-SQL 語句;而是可為 osql 和 isql 實(shí)用工具及 SQL Server 查詢分析器識(shí)別的命令。
SQL Server 實(shí)用工具將 GO 解釋為應(yīng)將當(dāng)前的 Transact-SQL 批處理語句發(fā)送給 SQL Server 的信號(hào)。當(dāng)前批處理語句是自上一 GO 命令后輸入的所有語句,若是第一條 GO 命令,則是從特殊會(huì)話或腳本的開始處到這條 GO 命令之間的所有語句。SQL 查詢分析器和 osql 及 isql 命令提示實(shí)用工具執(zhí)行 GO 命令的方式不同。有關(guān)更多信息,請(qǐng)參見 osql 實(shí)用工具、isql 實(shí)用工具和 SQL 查詢分析器。
GO 命令和Transact-SQL 語句不可在同一行上。但在 GO 命令行中可包含注釋。
用戶必須遵照使用批處理的規(guī)則。例如,在批處理中的第一條語句后執(zhí)行任何存儲(chǔ)過程必須包含 EXECUTE 關(guān)鍵字。局部(用戶定義)變量的作用域限制在一個(gè)批處理中,不可在 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 應(yīng)用程序可將多條 Transact-SQL 語句作為一個(gè)批處理發(fā)給 SQL Server 去執(zhí)行。在此批處理中的語句編譯成一個(gè)執(zhí)行計(jì)劃。程序員在 SQL Server 實(shí)用工具中執(zhí)行特定語句,或生成 Transact-SQL 語句腳本在 SQL Server 實(shí)用工具中運(yùn)行,用 GO 來標(biāo)識(shí)批處理的結(jié)束。
如果基于 DB-Library、ODBC 或 OLE DB APIs 的應(yīng)用程序試圖執(zhí)行 GO 命令時(shí)會(huì)收到語法錯(cuò)誤。SQL Server 實(shí)用工具永遠(yuǎn)不會(huì)向服務(wù)器發(fā)送 GO 命令。
權(quán)限
GO 是一個(gè)不需權(quán)限的實(shí)用工具命令。可以由任何用戶執(zhí)行。
示例
下面的示例創(chuàng)建兩個(gè)批處理。第一個(gè)批處理只包含一條 USE pubs 語句,用于設(shè)置數(shù)據(jù)庫上下文。剩下的語句使用了一個(gè)局部變量,因此所有的局部變量聲明必須在一個(gè)批處理中。這一點(diǎn)可通過在最后一條引用此變量的語句之后才使用 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 關(guān)注
- 1545 瀏覽
添加回答
舉報(bào)