sql server中的go
1. 作用:
向 SQL Server 實用工具發出一批 Transact-SQL 語句結束的信號.
2. 語法:
一批 Transact-SQL 語句
GO
如
Select 1
Select 2
Select 3
GO
3. 說明:
1) GO 不是 Transact-SQL 語句;
2) 它是 sqlcmd 和 osql 實用工具以及 SQL Server Management Studio 代碼編輯器識別的命令.
3) SQL Server 應用程序可以將多個 Transact-SQL 語句作為一個批發送到 SQL Server 的實例來執行.然後,該批中的語句被編譯成一個執行計劃.程序員在 SQL Server 實用工具中執行特殊語句,或生成 Transact-SQL 語句的腳本在 SQL Server 實用工具中運行時,使用 GO 作為批結束的信號.
4) 如果基於 ODBC 或 OLE DB API 的應用程序試圖執行 GO 命令,會收到語法錯誤.SQL Server 實用工具從不向服務器發送 GO 命令.
4. 權限:
GO 是一個不需任何權限的實用工具命令.它可以由任何用戶執行.
5. 用法:
1) SQL Server 實用工具將 GO 解釋為應該向 SQL Server 實例發送當前批 Transact-SQL 語句的信號.當前批語句由上一 GO 命令後輸入的所有語句組成,如果是第一條 GO 命令,則由即席會話或腳本開始後輸入的所有語句組成.
SQL Server中go語句使用註意事項
1、GO 命令和 Transact-SQL 語句不能在同一行中.但在 GO 命令行中可包含註釋
Select 1
GO
--會正確輸出結果,列名為”無列名”
Select 1 GO
--會正確輸出結果,列名為”GO”
--由此可知此處的GO並未起到應有的作用;
2、用戶必須遵照使用批處理的規則.例如,在同一批處理中,創建數據庫之後不能直接使用其新建的數據庫
create database [Roc]
use [Roc]
GO
--運行此批處理後,系統會報錯
--把此批處理分成兩個批即可正確運行
create database [Roc]
GO
use [Roc]
GO
3、局部(用戶定義)變量的作用域限制在一個批處理中,不可在 GO 命令後引用
declare @Roc varchar(max)
Select @Roc = ‘aking‘
GO
print @Roc
GO
--此為兩個批處理,由於局部變量的作用域要限制在一個批處理中,所以此語句錯誤
--把這兩個批合並為一個批即可正確運行
declare @Roc varchar(max)
Select @Roc = ‘aking‘
print @Roc
GO
4、每個被GO分隔的語句都是一個單獨的事務,一個語句執行失敗不會影響其它語句執行
select * from sysobjects where id=a
select getdate()
--你會發現會報錯,並且不會顯示任何結果集
select * from sysobjects where id=a
go
select getdate()
go
--你會發現盡管同樣會報錯,但結果集中包含select getdate()的結果。
5、GO [count] count 為正整數.指定GO 之前的批處理執行指定的次數
insert [Roc] Select ‘aking‘
GO
--批處理執行1次,向表Roc中插入一行記錄
aking Insert [Roc] Select ‘aking‘
GO 10
--批處理執行10次,向表Roc中插入10行記錄aking
sql server中的go