GOTO (Transact-SQL)
実行の流れを指定のラベルに分岐します。GOTO の後の Transact-SQL ステートメントはスキップされ、処理はそのラベルから続行されます。GOTO ステートメントとラベルは、プロシージャ、バッチ、またはステートメント ブロック内のどこででも使用できます。GOTO ステートメントは入れ子にすることができます。
構文
Define the label:
label :
Alter the execution:
GOTO label
引数
- label
GOTO によりラベルを指定した場合、そのラベルが以降の処理を開始する位置になります。ラベルは、識別子の規則に従う必要があります。GOTO の使用の有無にかかわらず、ラベルをコメント行として使用することができます。
説明
GOTO は、条件付きフロー制御ステートメント、ステートメント ブロック、またはプロシージャ内に存在できますが、バッチの外にあるラベルに移動できません。GOTO による分岐は、GOTO の前後に定義されたラベルに移動できます。
権限
GOTO 権限は、特に指定のない限りすべての有効なユーザーに与えられます。
例
次の例では、GOTO を分岐手段として使用する方法を示します。
DECLARE @Counter int;
SET @Counter = 1;
WHILE @Counter < 10
BEGIN
SELECT @Counter
SET @Counter = @Counter + 1
IF @Counter = 4 GOTO Branch_One --Jumps to the first branch.
IF @Counter = 5 GOTO Branch_Two --This will never execute.
END
Branch_One:
SELECT 'Jumping To Branch One.'
GOTO Branch_Three; --This will prevent Branch_Two from executing.
Branch_Two:
SELECT 'Jumping To Branch Two.'
Branch_Three:
SELECT 'Jumping To Branch Three.'