2 回答

TA貢獻1796條經驗 獲得超7個贊
SQL腳本是一種用SQL語言寫的批處理文件(.sql),SQL腳本通??梢杂蒘QL查詢分析器來執行。
=====================================================
GO向 SQL Server 實用工具發出一批 Transact-SQL 語句結束的信號。go是把t-sql語句分批次執行。(一步成功了才會執行下一步,即一步一個GO)
語法
GO
注釋
GO 不是Transact-SQL語句;而是可為cmdsql和osql實用工具及SQL Server查詢分析器識別的命令。
SQL Server實用工具將GO解釋為應將當前的Transact-SQL批處理語句發送給SQL Server的信號。當前批處理語句是自上一GO命令后輸入的所有語句,若是第一條GO命令,則是從特殊會話或腳本的開始處到這條GO命令之間的所有語句。
GO命令和Transact-SQL語句不可在同一行上。但在GO命令行中可包含注釋。
用戶必須遵照使用批處理(.sql)的規則。
例如,在批處理(.sql)中的第一條語句后執行任何存儲過程必須包含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 是一個不需權限的實用工具命令??梢杂扇魏斡脩魣绦?。
示例
下面的示例創建兩個批處理。第一個批處理只包含一條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
=================================================
USE //改變當前操作數據庫
用法:
USE 數據庫名
例:
CREATE DATABASE XX1 --創建XX1數據庫
………………
GO
CREATE DATABASE XX2 --創建XX2數據庫
………………
GO
USE XX1 --轉到XX1數據庫
GO
………… --對XX1數據庫的操作
GO
USE XX2 --轉到XX2數據庫
GO
………… --對XX2數據庫的操作
GO
USE在存儲過程中不能直接使用
但可以這樣用:
create proc test
as
exec('use pubs select * from jobs') --或者exec(use pubs) exec sp_adduser 'xxxx'
go
--使用Exec(ute)語句配合USE來改變當前數據庫,但數據庫環境的更改只在Execute語句結束前有效,所以必須把后面的語句和Execute放到一起
exec test
- 2 回答
- 0 關注
- 1480 瀏覽
添加回答
舉報