2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
SQL腳本是一種用SQL語言寫的批處理文件(.sql),SQL腳本通??梢杂蒘QL查詢分析器來執(zhí)行。
=====================================================
GO向 SQL Server 實(shí)用工具發(fā)出一批 Transact-SQL 語句結(jié)束的信號。go是把t-sql語句分批次執(zhí)行。(一步成功了才會執(zhí)行下一步,即一步一個(gè)GO)
語法
GO
注釋
GO 不是Transact-SQL語句;而是可為cmdsql和osql實(shí)用工具及SQL Server查詢分析器識別的命令。
SQL Server實(shí)用工具將GO解釋為應(yīng)將當(dāng)前的Transact-SQL批處理語句發(fā)送給SQL Server的信號。當(dāng)前批處理語句是自上一GO命令后輸入的所有語句,若是第一條GO命令,則是從特殊會話或腳本的開始處到這條GO命令之間的所有語句。
GO命令和Transact-SQL語句不可在同一行上。但在GO命令行中可包含注釋。
用戶必須遵照使用批處理(.sql)的規(guī)則。
例如,在批處理(.sql)中的第一條語句后執(zhí)行任何存儲過程必須包含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)識批處理的結(jié)束。
如果基于DB-Library、ODBC或OLE DB APIs的應(yīng)用程序試圖執(zhí)行GO命令時(shí)會收到語法錯誤。SQL Server實(shí)用工具永遠(yuǎn)不會向服務(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
=================================================
USE //改變當(dāng)前操作數(shù)據(jù)庫
用法:
USE 數(shù)據(jù)庫名
例:
CREATE DATABASE XX1 --創(chuàng)建XX1數(shù)據(jù)庫
………………
GO
CREATE DATABASE XX2 --創(chuàng)建XX2數(shù)據(jù)庫
………………
GO
USE XX1 --轉(zhuǎn)到XX1數(shù)據(jù)庫
GO
………… --對XX1數(shù)據(jù)庫的操作
GO
USE XX2 --轉(zhuǎn)到XX2數(shù)據(jù)庫
GO
………… --對XX2數(shù)據(jù)庫的操作
GO
USE在存儲過程中不能直接使用
但可以這樣用:
create proc test
as
exec('use pubs select * from jobs') --或者exec(use pubs) exec sp_adduser 'xxxx'
go
--使用Exec(ute)語句配合USE來改變當(dāng)前數(shù)據(jù)庫,但數(shù)據(jù)庫環(huán)境的更改只在Execute語句結(jié)束前有效,所以必須把后面的語句和Execute放到一起
exec test
- 2 回答
- 0 關(guān)注
- 1486 瀏覽
添加回答
舉報(bào)