定義されている繰返し文内に組み込まれている1つまたは複数の文を繰り返し実行します。
ANSI準拠
LOOPは、ANSI/ISO SQL:2011に準拠しています。
必要な権限
なし。
呼び出し
実行可能形式。
ストアド プロシージャのみ。
構文
[ label_name : ] LOOP statement [...] END LOOP [ label_name ] ;
構文要素
- label_name
- LOOP文のオプションのラベル
- statement
- 無条件で処理される文リスト。リストには、次のものが含まれます。
- SQL DML、DDL、またはDCL文(動的SQLも含む)
- 制御文、BEGIN ENDを含む。
使用上の注意
- LOOPは文ラベルで修飾できます。
LOOP内に指定されているLEAVE文は繰返し文を終了し、ラベルが指定されている文の次の文に制御を渡します。
- 文を必ず正常に終了させるためには、LOOP文の内側にLEAVE文を指定する必要があります。
指定しないと、ループが繰り返され、非同期のアボートが生じるまで停止できません。
- LOOP終了エラーの原因
- LOOP内の文に例外条件が生じても、その条件に対するCONTINUEハンドラーが宣言されていれば、ストアド プロシージャの実行は続けられます。
- EXITハンドラーが宣言されている場合、文はストアド プロシージャの実行を終了します。
- LOOP内の文に例外条件が生じ、関連するSQLSTATEコードがハンドラーに定義されていない場合、ループとストアド プロシージャの両方が終了します。
例: LOOP文
以下に示すのは正しいLOOP文です。
L1: LOOP INSERT INTO transaction (trans_num, account_num) VALUES (hCounter, hAccountNum); SET hCounter = hCounter - 1; IF hCounter = 0 THEN LEAVE L1; END IF; END LOOP L1;