14.29 EXIT文
EXIT
文は、現行のループの反復を条件付きまたは無条件で終了し、カレント・ループまたはラベルが付けられている外側のループのいずれかの最後に制御を移します。
EXIT
WHEN
文は、WHEN
句内の条件がTRUEの場合、現行のループの反復を終了し、カレント・ループまたはラベルが付けられている外側のループのいずれかの最後に制御を移します。
制御がEXIT
WHEN
文に達するたびに、WHEN
句内の条件が評価されます。条件がTRUEでない場合、EXIT
WHEN
文は何も実行しません。無限ループが発生しないように、ループの内側の文で条件がTRUEになるようにする必要があります。
EXIT文の制限
EXIT
文はLOOP
文内にある必要があります。
ここでのトピック
構文
セマンティクス
exit_statement
label
現在のループまたは囲みループを識別する名前です。
label
を指定しない場合、EXIT
文はカレント・ループの最後に制御を移します。label
を指定すると、EXIT
文は、label
で識別されるループの最後に制御を移します。
WHEN boolean_expression
この句を指定しない場合、EXIT
文は現行のループの反復を無条件で終了します。この句を指定すると、boolean_expression
の値がTRUE
の場合にのみEXIT
文は現行のループの反復を終了します。
例
例14-31 EXIT文が含まれている基本LOOP文
この例では、基本LOOP
文内のEXIT
文が無条件でカレント・ループの最後に制御を移します。
DECLARE x NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE ('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; IF x > 3 THEN EXIT; END IF; END LOOP; -- After EXIT, control resumes here 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: x = 3 After loop: x = 4
例14-32 EXIT WHEN文が含まれている基本LOOP文
この例では、x
が3より大きい場合、基本LOOP
文の内側のEXIT
WHEN
文が現行のループの最後に制御を移します。
DECLARE x NUMBER := 0; BEGIN LOOP DBMS_OUTPUT.PUT_LINE('Inside loop: x = ' || TO_CHAR(x)); x := x + 1; -- prevents infinite loop EXIT WHEN x > 3; END LOOP; -- After EXIT statement, control resumes here 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: x = 3 After loop: x = 4