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.