出處:http://www.cnblogs.com/JCSU/articles/1099177.html8Dju o&jv0
+h|FQu5Z(ha6_+w0go 是SYBASE和SQL Server中用來表示事物結束,提交並確認結果,相當於ORACLE的Commit51Testing軟體測試網 d ED c%t'K
Iw{3W/wM'TD0SQL Server 公用程式將 GO 解釋為應將當前的 Transact-SQL 批處理語句發送給 SQL Server 的訊號。當前批處理語句是自上一 GO 命令後輸入的所有語句,若是第一條 GO 命令,則是從特殊會話或指令碼的開始處到這條 GO 命令之間的所有語句。 Hd;PwEK0 'oC)f.cz:zB*o0GO 命令和Transact-SQL 陳述式不可在同一行上。但在 GO 命令列中可包含注釋。51Testing軟體測試網Bt)YVT&tuf 使用者必須遵照使用批處理的規則。例如,在批處理中的第一條語句後執行任何預存程序必須包含 EXECUTE 關鍵字。局部(使用者定義)變數的範圍限制在一個批處理中,不可在 GO 命令後引用。 51Testing軟體測試網;Wx{Jx-t:qu
USE pubs N xa]%y0GO .P/^)t{^ f1M8YWGV0DECLARE@MyMsgVARCHAR(50) 3BE&KGy8y1pb@0SELECT@MyMsg='Hello, World.' 51Testing軟體測試網s"NN-OQ7ws3m8v GO-- @MyMsg is not valid after this GO ends the batch. 51Testing軟體測試網 ry8dKU7s'{Z$P3j 51Testing軟體測試網Ec(b HC'Ga pt -- Yields an error because @MyMsg not declared in this batch. 51Testing軟體測試網"n{uP.UKB PRINT@MyMsg 51Testing軟體測試網g-SB f'f8f-v GO
w(H/n,b5N8W0
SELECT@@VERSION; T[3v:VH0-- Yields an error: Must be EXEC sp_who if not first statement in )NoQ|^e!C0-- batch. LA8O%l!p0sp_who W$p]%X1E0GO 51Testing軟體測試網/oZ*Qq ~e*\&QG
51Testing軟體測試網0j:r_Xh4?G
SQL Server 應用程式可將多條 Transact-SQL 陳述式作為一個批處理髮給 SQL Server 去執行。在此批處理中的語句編譯成一個執行計畫。程式員在 SQL Server 公用程式中執行特定語句,或產生 Transact-SQL 陳述式指令碼在 SQL Server 公用程式中運行,用 GO 來標識批處理的結束。 `Y,TJ5y|.Y\0如果基於 DB-Library、ODBC 或 OLE DB APIs 的應用程式試圖執行 GO 命令時會收到語法錯誤。SQL Server 公用程式永遠不會向伺服器發送 GO 命令。51Testing軟體測試網bcl3R {|cA 許可權51Testing軟體測試網wVX'l7w;u2O}4x^ GO 是一個不需許可權的工具 + 生產力命令。可以由任何使用者執行。 }-{G4km0F0樣本51Testing軟體測試網iWBmjQY 下面的樣本建立兩個批處理。第一個批處理只包含一條 USE pubs 語句,用於設定資料庫上下文。剩下的語句使用了一個局部變數,因此所有的局部變數聲明必須在一個批處理中。這一點可通過在最後一條引用此變數的語句之後才使用 GO 命令來做到。
Y3nZe*wX3[6_'t0
USE pubs 4b7\3L%SGD8f0GO 51Testing軟體測試網R'Qa(kx DECLARE@NmbrAuthorsint 51Testing軟體測試網U"D:cxy6q_a SELECT@NmbrAuthors=COUNT(*) 'N\COBjL/J0FROM authors 51Testing軟體測試網w!`*e!v%kH PRINT'The number of authors as of '+ 51Testing軟體測試網Wie;eI3kH9j? CAST(GETDATE() ASchar(20)) +' is '+ &v7q ^m.D'gV0 CAST(@NmbrAuthorsASchar (10)) ,U-s:dKnaj0Z;`0GO