2012-03-30 10 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

+0

私はGOが何であるかを知っていますが、例えばGOなしで2つの手順を追加する方法はありますか?私はできない。 –

+0

@MarekKwiendacz - あなたはスクリプトを再考する必要があります。ローカル変数は使用しないでください。 – Oded

関連する問題