Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.6.2 ステートメントラベルの構文

[begin_label:] BEGIN
    [statement_list]
END [end_label]

[begin_label:] LOOP
    statement_list
END LOOP [end_label]

[begin_label:] REPEAT
    statement_list
UNTIL search_condition
END REPEAT [end_label]

[begin_label:] WHILE search_condition DO
    statement_list
END WHILE [end_label]

BEGIN ... END ブロックや、LOOPREPEAT、および WHILE ステートメントに対してラベルが許可されます。これらのステートメントに使用されるラベルは、次のルールに従います。

  • begin_label のあとにコロンを付ける必要があります。

  • begin_label は、end_label なしでも指定できます。end_label が存在する場合、それは begin_label と同じである必要があります。

  • end_label は、begin_label なしでは指定できません。

  • 同じネストレベルにあるラベルは異なっている必要があります。

  • ラベルは最大 16 文字の長さで指定できます。

ラベルが付けられた構造構文内でラベルを参照するには、ITERATE または LEAVE ステートメントを使用します。次の例では、これらのステートメントを使用して繰り返しを続行するか、またはループを終了します。

CREATE PROCEDURE doiterate(p1 INT)
BEGIN
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN ITERATE label1; END IF;
    LEAVE label1;
  END LOOP label1;
END;

ブロックラベルのスコープには、そのブロック内で宣言されているハンドラのコードは含まれません。詳細は、セクション13.6.7.2「DECLARE ... HANDLER 構文」を参照してください。