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

関連項目

参照

フロー制御言語 (Transact-SQL)

BEGIN...END (Transact-SQL)

BREAK (Transact-SQL)

CONTINUE (Transact-SQL)

IF...ELSE (Transact-SQL)

WAITFOR (Transact-SQL)

WHILE (Transact-SQL)