FOR (整数可変) ステートメント (PL/SQL)
FOR ステートメントを使用すると、一連の SQL ステートメントを複数回実行できます。
呼び出し方法
このステートメントは、PL/SQL プロシージャー、関数、または無名ブロック・ステートメント内に組み込むことができます。
許可
FOR ステートメントを呼び出すために特権は必要ありません。ただし、ステートメントの許可 ID は、FOR ステートメント内に組み込んだ SQL ステートメントの呼び出しに必要な特権を保持していなければなりません。
構文
説明
- integer-variable
- ループ処理中に使用される、自動的に定義された整数変数。 integer-variable の初期値は expression1 です。 最初の反復後、integer-variable の値は、以後の反復が開始されるたびに増分されます。 expression1 および expression2 は両方ともループ突入時に評価され、integer-variable が expression2 に等しくなるとループ処理は停止します。
- 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