カテゴリー
開発

Declareのスコープ

今回結構長めのバッチを作ってみて、いまいちDeclareで定義した変数のスコープがよく分からなかったのですが、なんとなく分かってきました。

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

この記事を書いた人: A-tak

A-tak.com(えいたっく どっとこむ)の管理人。
Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。
A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。今年で18年目!

Youtube / Twitter / Mastodon / Facebook