FOR (カーソル可変) ステートメント (PL/SQL)

カーソル FOR ループ・ステートメントは、既に宣言されているカーソルをオープンし、カーソル結果セット内の行をすべて取り出してから、カーソルをクローズします。

複数の SQL ステートメントを別個に使用する代わりにこのステートメントを使用することにより、カーソルをオープンし、結果セットの各行を取得するループ構成体を定義し、結果セットの終わりに達しているかのテストを行ってから、最後にカーソルをクローズすることができます。

呼び出し方法

このステートメントは、PL/SQL プロシージャー、関数、トリガー、または無名ブロック内で呼び出すことができます。

許可

SQL ステートメント内で行の式を参照するための特定の許可は必要ありません。しかし、ステートメントを正常に実行するには、カーソルの処理に必要な他の許可すべてが必要です。

構文

構文図を読む構文図をスキップするFOR recordINcursor LOOPstatementsEND LOOP

説明

FOR
FOR ループを続行するために真になる必要がある条件の開始を示します。
record
定義 cursor%ROWTYPE を使用して暗黙に宣言されたレコードに割り当てられた ID を指定します。
IN cursor
既に宣言されているカーソルの名前を指定します。
LOOP および END LOOP
ループ全体で毎回の反復中に実行される SQL ステートメントを含むループの開始と終了。
statements
1 つ以上の PL/SQL ステートメント。 少なくとも 1 つのステートメントが必要です。

以下の例は、カーソル FOR ループが含まれるプロシージャーを示しています。
CREATE OR REPLACE PROCEDURE cursor_example
IS
  CURSOR emp_cur_1 IS SELECT * FROM emp;
BEGIN
  DBMS_OUTPUT.PUT_LINE('EMPNO    ENAME');
  DBMS_OUTPUT.PUT_LINE('-----    -------');
  FOR v_emp_rec IN emp_cur_1 LOOP
    DBMS_OUTPUT.PUT_LINE(v_emp_rec.empno || '     ' || v_emp_rec.ename);
  END LOOP;
END;