14.15 CONTINUE文
CONTINUE
文は、現行のループの反復を条件付きまたは無条件で終了し、カレント・ループまたはラベルが付けられている外側のループのいずれかの次の反復に制御を移します。
CONTINUE
文でカーソルFOR
ループを途中で終了すると(たとえば、内部ループを終了して外部ループの次の反復に制御を移すと)、カーソルはクローズします(このコンテキストでは、CONTINUE
はGOTO
と同様に動作します)。
CONTINUE
WHEN
文は、WHEN
句内の条件がTRUEの場合、現行のループの反復を終了し、カレント・ループまたはラベルが付けられている外側のループのいずれかの次の反復に制御を移します。
制御がCONTINUE
WHEN
文に達するたびに、WHEN
句内の条件が評価されます。条件がTRUEでない場合、CONTINUE
WHEN
文は何も実行しません。
CONTINUE文の制限
-
CONTINUE
文はLOOP
文内にある必要があります。 -
CONTINUE
文はサブプログラムまたはメソッドの境界を越えることはできません。
ここでのトピック
セマンティクス
continue_statement
label
現在のループまたは囲みループを識別する名前です。
label
を指定しない場合、CONTINUE
文はカレント・ループの次の反復に制御を移します。label
を指定すると、CONTINUE
文は、label
で識別されるループの次の反復に制御を移します。
WHEN boolean_expression
この句を指定しない場合、CONTINUE
文は現行のループの反復を無条件で終了します。この句を指定すると、boolean_expression
の値がTRUE
の場合にのみCONTINUE
文は現行のループの反復を終了します。
例
例14-12 基本LOOP文内のCONTINUE文
この例では、基本LOOP
文内のCONTINUE
文が無条件でカレント・ループの次の反復に制御を移します。
DECLARE x NUMBER := 0; BEGIN LOOP -- After CONTINUE statement, control resumes here DBMS_OUTPUT.PUT_LINE ('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; IF x < 3 THEN CONTINUE; END IF; DBMS_OUTPUT.PUT_LINE ('Inside loop, after CONTINUE: x = ' || TO_CHAR(x)); EXIT WHEN x = 5; END LOOP; DBMS_OUTPUT.PUT_LINE (' After loop: x = ' || TO_CHAR(x)); END; /
結果:
Inside loop: x = 0 Inside loop: x = 1 Inside loop: x = 2 Inside loop, after CONTINUE: x = 3 Inside loop: x = 3 Inside loop, after CONTINUE: x = 4 Inside loop: x = 4 Inside loop, after CONTINUE: x = 5 After loop: x = 5
例14-13 基本LOOP文内のCONTINUE WHEN文
この例では、x
が3より小さい場合、基本LOOP
文内のCONTINUE
WHEN
文がカレント・ループの次の反復に制御を移します。
DECLARE x NUMBER := 0; BEGIN LOOP -- After CONTINUE statement, control resumes here DBMS_OUTPUT.PUT_LINE ('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; CONTINUE WHEN x < 3; DBMS_OUTPUT.PUT_LINE ('Inside loop, after CONTINUE: x = ' || TO_CHAR(x)); EXIT WHEN x = 5; END LOOP; DBMS_OUTPUT.PUT_LINE (' After loop: x = ' || TO_CHAR(x)); END; /
結果:
Inside loop: x = 0 Inside loop: x = 1 Inside loop: x = 2 Inside loop, after CONTINUE: x = 3 Inside loop: x = 3 Inside loop, after CONTINUE: x = 4 Inside loop: x = 4 Inside loop, after CONTINUE: x = 5 After loop: x = 5