GOTO (Transact-SQL)

実行の流れを指定のラベルに分岐します。GOTO の後の Transact-SQL ステートメントはスキップされ、処理はそのラベルから続行されます。GOTO ステートメントとラベルは、プロシージャ、バッチ、またはステートメント ブロック内のどこででも使用できます。GOTO ステートメントは入れ子にすることができます。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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.'