日本語PDF

13.33 FOR LOOP文

FOR LOOP文が反復されるたびに、文が実行され、索引が増分または減分され、制御がループの先頭に戻ります。指定された値に索引が達した場合、ループの内側の文によって制御がループの外側に移された場合、または例外が呼び出された場合は、FOR LOOP文が終了します。

ここでのトピック

構文

for_loop_statement ::=

セマンティクス

for_loop_statement

index

FOR LOOP文に対してローカルな、暗黙に宣言された整変数の名前。ループの外側の文は、indexを参照できません。ループの内側の文はindexを参照できますが、値を変更することはできません。FOR LOOP文の実行後、indexは未定義となります。

関連項目:

FOR LOOP索引

[ REVERSE ] lower_bound ..upper_bound

lower_boundおよびupper_boundは、整数に評価されるものにする必要があります(「下限と上限」を参照)。PL/SQLでは、lower_boundupper_boundFOR LOOP文に入ったときに一度評価され、一時的なPLS_INTEGER値として格納されます(必要に応じて、最も近い整数に四捨五入されます)。

lower_boundupper_boundが等しい場合、statementsは一度のみ実行されます。

FOR LOOP文の実行開始時にlower_boundupper_boundが等しくない場合、次のようになります。

  • REVERSEが省略されている場合:

    lower_boundupper_boundよりも大きい場合、statementsは実行されず、制御はFOR LOOP文の後の文に移ります。

    それ以外の場合は、lower_boundindexに代入され、statementsが実行され、制御がループの先頭に移り、indexupper_boundと比較されます。indexupper_boundよりも小さい場合、indexが1だけ増分され、statementsが再び実行され、制御がループの先頭に戻ります。indexupper_boundよりも大きい場合、制御がFOR LOOP文の後の文に移ります。

  • REVERSEが指定されている場合:

    upper_boundlower_boundよりも小さい場合、statementsは実行されず、制御はFOR LOOP文の後の文に移ります。

    それ以外の場合は、upper_boundindexに代入され、statementsが実行され、制御がループの先頭に移り、indexlower_boundと比較されます。indexlower_boundよりも大きい場合、indexが1だけ減分され、statementsが再び実行され、制御がループの先頭に戻ります。indexlower_boundよりも小さい場合、制御がFOR LOOP文の後の文に移ります。

label

for_loop_statementを識別するラベル(「statement ::=」および「label」を参照)。CONTINUEEXITおよびGOTO文でこのラベルを参照できます。

LOOP文がネストされている場合は特に、ラベルによって読みやすさが向上します。ただし、END LOOP文内のラベルが、同じLOOP文の先頭のラベルと一致している場合のみです(コンパイラではチェックしません)。

  • 例4-15FOR LOOP文

  • 例4-16反転FOR LOOP文

  • 例4-17FOR LOOP文でのSTEP句のシミュレート

  • 例4-19外側の文によるFOR LOOP文の索引の参照

  • 例4-20変数と同じ名前を持つFOR LOOP文の索引

  • 例4-21FOR LOOP文による索引と同じ名前を持つ変数の参照

  • 例4-22同じ索引名のネストしたFOR LOOP文

  • 例4-23FOR LOOP文の境界

  • 例4-24実行時に境界が指定されるFOR LOOP文