14.71 WHILE LOOP文
WHILE LOOP文は、条件がTRUEの場合に1つ以上の文を実行します。
ここでのトピック
条件がFALSEまたはNULLになった場合、ループの内側の文によって制御がループの外側に移されたかまたは例外が呼び出された場合に、WHILE LOOP文は終了します。
構文
セマンティクス
while_loop_statement
boolean_expression
値がTRUE、FALSEまたはNULLの式です。
boolean_expressionは、ループの各反復の先頭で評価されます。値がTRUEの場合は、LOOPの後の文が実行されます。それ以外の場合は、制御がWHILE LOOP文の後の文に移ります。
statement
無限ループが発生しないように、1つ以上の文によってboolean_expressionの値をFALSEまたはNULLに変更するか、制御をループの外側に移すか、または例外を呼び出す必要があります。制御をループの外側に移すことができる文には次のものがあります。
-
「CONTINUE文」(外側のラベル付きループの次の反復に制御を移す場合)
label
while_loop_statementを識別するラベル(「statement ::=」および「ラベル」を参照)。CONTINUE、EXITおよびGOTO文でこのラベルを参照できます。
LOOP文がネストされている場合は特に、ラベルによって読みやすさが向上します。ただし、END LOOP文内のラベルが、同じLOOP文の先頭のラベルと一致している場合のみです(コンパイラではチェックしません)。
例
例14-47 WHILE LOOP文
最初のWHILE LOOP文内の文は実行されず、2番目のWHILE LOOP文内の文が1回実行されます。
DECLARE
done BOOLEAN := FALSE;
BEGIN
WHILE done LOOP
DBMS_OUTPUT.PUT_LINE ('This line does not print.');
done := TRUE; -- This assignment is not made.
END LOOP;
WHILE NOT done LOOP
DBMS_OUTPUT.PUT_LINE ('Hello, world!');
done := TRUE;
END LOOP;
END;
/
結果:
Hello, world!
