FOR (カーソル可変) ステートメント (PL/SQL)
カーソル FOR ループ・ステートメントは、既に宣言されているカーソルをオープンし、カーソル結果セット内の行をすべて取り出してから、カーソルをクローズします。
複数の SQL ステートメントを別個に使用する代わりにこのステートメントを使用することにより、カーソルをオープンし、結果セットの各行を取得するループ構成体を定義し、結果セットの終わりに達しているかのテストを行ってから、最後にカーソルをクローズすることができます。
呼び出し方法
このステートメントは、PL/SQL プロシージャー、関数、トリガー、または無名ブロック内で呼び出すことができます。
許可
SQL ステートメント内で行の式を参照するための特定の許可は必要ありません。しかし、ステートメントを正常に実行するには、カーソルの処理に必要な他の許可すべてが必要です。
構文
説明
- 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;
