FOR (整数可変) ステートメント (PL/SQL)

FOR ステートメントを使用すると、一連の SQL ステートメントを複数回実行できます。

呼び出し方法

このステートメントは、PL/SQL プロシージャー、関数、または無名ブロック・ステートメント内に組み込むことができます。

許可

FOR ステートメントを呼び出すために特権は必要ありません。ただし、ステートメントの許可 ID は、FOR ステートメント内に組み込んだ SQL ステートメントの呼び出しに必要な特権を保持していなければなりません。

構文

構文図を読む構文図をスキップするFOR integer-variableIN REVERSE expression1..expression2LOOPstatementsEND LOOP

説明

integer-variable
ループ処理中に使用される、自動的に定義された整数変数。 integer-variable の初期値は expression1 です。 最初の反復後、integer-variable の値は、以後の反復が開始されるたびに増分されます。 expression1 および expression2 は両方ともループ突入時に評価され、integer-variableexpression2 に等しくなるとループ処理は停止します。
IN
この後に、オプションの REVERSE キーワードと、ループにおける整数変数の範囲を定義する式が置かれます。
REVERSE
expression2 から expression1 まで反復が続行されることを指定します。 ループ内のステートメントを処理するには、REVERSE キーワードを指定するかどうかにかかわらず、expression2 の値が expression1 より大きくなければならないことに注意してください。
expression1
ループにおける整数変数の範囲の初期値を指定します。 REVERSE キーワードを指定する場合、expression1 には、ループにおける整数変数の範囲の終了値を指定します。
expression2
ループにおける整数変数の範囲の終了値を指定します。 REVERSE キーワードを指定する場合、expression2 には、ループにおける整数変数の範囲の初期値を指定します。
statements
ループが処理されるたびに実行される PL/SQL および SQL ステートメントを指定します。

以下の例は、無名ブロック内の基本的な FOR ステートメントを示しています。
BEGIN
  FOR i IN 1 .. 10 LOOP
    DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
  END LOOP;
END;
この例によって生成される出力を以下に示します。
Iteration # 1
Iteration # 2
Iteration # 3
Iteration # 4
Iteration # 5
Iteration # 6
Iteration # 7
Iteration # 8
Iteration # 9
Iteration # 10
以下の例に示されているように、開始値が終了値より大きい場合は、ループ本体はまったく実行されませんが、エラーは返されません。
BEGIN
  FOR i IN 10 .. 1 LOOP
    DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
  END LOOP;
END;
この例では、ループ本体が実行されることはないので、出力は生成されません。
以下の例では、REVERSE キーワードを使用します。
BEGIN
  FOR i IN REVERSE 1 .. 10 LOOP
    DBMS_OUTPUT.PUT_LINE('Iteration # ' || i);
  END LOOP;
END;
この例によって生成される出力を以下に示します。
Iteration # 10
Iteration # 9
Iteration # 8
Iteration # 7
Iteration # 6
Iteration # 5
Iteration # 4
Iteration # 3
Iteration # 2
Iteration # 1