カーソルと共に %ROWTYPE を使用する (PL/SQL)

%ROWTYPE 属性を使用すると、カーソルまたはカーソル変数からフェッチされた列のすべてに対応するフィールドを持つレコードを定義できます。 各フィールドのデータ・タイプは、それに対応する列のデータ・タイプになります。

%ROWTYPE 属性には、接頭辞としてカーソル名またはカーソル変数名が付きます。 構文は record cursor%ROWTYPE となります。ここで、record はレコードに割り当てられる ID です。また cursor は、現在のスコープ内で明示的に宣言されたカーソルです。

以下の例では、%ROWTYPE 属性と共にカーソルを使用して、EMP 表内の各従業員に関する部門情報を取得する方法を示します。
CREATE OR REPLACE PROCEDURE emp_info
IS
    CURSOR empcur IS SELECT ename, deptno FROM emp;
    myvar           empcur%ROWTYPE;
BEGIN
    OPEN empcur;
    LOOP
        FETCH empcur INTO myvar;
        EXIT WHEN empcur%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE( myvar.ename || ' works in department '
            || myvar.deptno );
    END LOOP;
    CLOSE empcur;
END;
このプロシージャーの呼び出し (CALL emp_info;) により返される出力例を以下に示します。
SMITH works in department 20
ALLEN works in department 30
WARD works in department 30
JONES works in department 20
MARTIN works in department 30
BLAKE works in department 30
CLARK works in department 10
SCOTT works in department 20
KING works in department 10
TURNER works in department 30
ADAMS works in department 20
JAMES works in department 30
FORD works in department 20
MILLER works in department 10