2012-03-30 37 views
1

我需要通過GO命令訪問整個腳本中的變量,該腳本被劃分爲幾個部分。怎麼做?如何訪問整個SQL腳本中的變量

下面是源例如(不工作):

--script info (begining of script file) 
DECLARE @ScriptCode NVARCHAR (20) = '20120330-01' 

--some queries 
GO 

--and there I cannot use @ScriptCode variable 
INSERT INTO DBScriptsHistory(ScriptCode) VALUES(@ScriptCode) 

回答

2

這是正確的,因爲變量僅存在於當前批處理中。假設您需要使用GO語句(例如,CREATE VIEW必須是批處理中的第一條語句),最簡單的解決方案可能是使用sqlcmd scripting variables

1

取出GO關鍵字,它會工作。一旦你調用GO,變量就不再處於範圍之內。

2

GO語句是針對不同SQL客戶端工具的批分隔符 - 它不是SQL的一部分。

每批都是獨立的 - 只是刪除GO聲明。

參見GO (Tranasct-SQL)

本地(用戶定義的)變量的範圍被限制在一個批量,和GO命令之後不能被引用。

+0

刪除GO將在OP顯示的特定情況下工作,但在一般情況下不起作用,因爲有時需要GO:許多(大多數?)CREATE語句必須是批處理中的第一條語句。 – Pondlife 2012-03-30 10:23:10

+0

我知道GO是什麼,但是如何在沒有GO的情況下添加2個程序?我不能。 – 2012-03-30 10:23:39

+0

@MarekKwiendacz - 那麼你需要重新思考你的腳本。不要使用局部變量。 – Oded 2012-03-30 10:24:30

相關問題