Plsql-for-loop
提供:Dev Guides
PL/SQL-FOR LOOPステートメント
*FOR LOOP* は、特定の回数実行する必要があるループを効率的に記述することができる繰り返し制御構造です。
構文
FOR counter IN initial_value .. final_value LOOP
sequence_of_statements;
END LOOP;
以下は、* Forループ*での制御の流れです-
- 最初のステップが最初に実行され、一度だけ実行されます。 このステップにより、ループ制御変数を宣言および初期化できます。
- 次に、条件、つまり_initial_value .. final_value_が評価されます。 TRUEの場合、ループの本体が実行されます。 FALSEの場合、ループの本体は実行されず、制御のフローはforループの直後の次のステートメントにジャンプします。
- forループの本体が実行されると、カウンター変数の値が増減します。
- 条件が再び評価されます。 TRUEの場合、ループが実行され、プロセスが繰り返されます(ループの本体、ステップのインクリメント、および条件の再設定)。 条件がFALSEになると、FOR-LOOPは終了します。
PL/SQL forループのいくつかの特別な特性は次のとおりです-
- ループ変数またはカウンターの_initial_value_および_final_value_は、リテラル、変数、または式にすることができますが、数値に評価する必要があります。 そうでない場合、PL/SQLは事前定義の例外VALUE_ERRORを発生させます。
- _initial_value_は1である必要はありません。ただし、*ループカウンターの増分(または減分)は1 *でなければなりません。 *PL/SQLでは、実行時にループ範囲を動的に決定できます。
例
DECLARE
a number(2);
BEGIN
FOR a in 10 .. 20 LOOP
dbms_output.put_line('value of a: ' || a);
END LOOP;
END;
/
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
value of a: 20
PL/SQL procedure successfully completed.
FOR LOOPステートメントの逆
デフォルトでは、反復は初期値から最終値に進みます。通常は、下限から上限に向かって上向きに進みます。* REVERSE *キーワードを使用して、この順序を逆にすることができます。 そのような場合、反復は他の方法で進行します。 各反復の後、ループカウンターは減少します。
ただし、範囲の境界は昇順(降順ではなく)で記述する必要があります。 次のプログラムはこれを示しています-
DECLARE
a number(2) ;
BEGIN
FOR a IN REVERSE 10 .. 20 LOOP
dbms_output.put_line('value of a: ' || a);
END LOOP;
END;
/
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
value of a: 20
value of a: 19
value of a: 18
value of a: 17
value of a: 16
value of a: 15
value of a: 14
value of a: 13
value of a: 12
value of a: 11
value of a: 10
PL/SQL procedure successfully completed.