広告
今回結構長めのバッチを作ってみて、いまいちDeclareで定義した変数のスコープがよく分からなかったのですが、なんとなく分かってきました。
例えば、
declare @test int
declare @test int
とすると@testが重複宣言されているとエラーになるが、
declare @test int
GO
declare @test int
だとエラーにならない
ヘルプによると、
「ローカル変数の有効範囲は、これが宣言されているバッチ、ストアド プロシージャ、またはステートメント ブロックです。」
とあり、GOの説明に「バッチ終了を通知する」とあるので、それで二回宣言してもエラーにならないのでしょう。
これをうまく使えば、結構すっきりした形でバッチがかけそうです。
広告