PL/SQL レコード型
PL/SQL のレコード型とは名前をつけることができるデータのコンテナである。
プログラミング言語で、よく構造体として呼ばれているものとほぼ同じである。
レコード型の定義方法には データ型 を指定する定義方法に加えて、既存表や カーソル (SELECT) の構造の定義を ROWTYPE 属性により複製することができる。
使用する用途は主にテーブルからのレコード取り出しに使用(※)することが多い、
また、プロシージャのパラメータが煩雑になったときにレコード型をパラメータとして使用することもある。
(※) Oracle 9i R2 から レコード型全体での INSERT 、UPDATE がサポートされている。
ユーザー定義によるレコード型の定義
DECLARE
-- ここから
TYPE tID_NAME IS RECORD (
id NUMBER NOT NULL DEFAULT -1,
name VARCHAR(8) DEFAULT 'ななし'
);
-- ここまで
vID_NAME tID_NAME;
BEGIN
vID_NAME.ID := 1;
DBMS_OUTPUT.PUT_LINE(vID_NAME.ID || '.' || vID_NAME.NAME);
END;
/
表を使用した定義
DECLARE
-- ここから
vUser USER_MASTER%ROWTYPE;
-- ここまで
BEGIN
SELECT * INTO vUser FROM USER_MASTER
WHERE ROWNUM <= 1;
DBMS_OUTPUT.PUT_LINE(vUser.USER_NAME);
END;
/
カーソルを使用した定義
DECLARE
-- ここから
CURSOR cIDName IS
SELECT USER_ID, USER_NAME FROM USER_MASTER;
vIDName cIDName%ROWTYPE;
-- ここまで
BEGIN
OPEN cIDName;
LOOP
FETCH cIDName INTO vIDName;
EXIT WHEN cIDName%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(vIDName.USER_NAME);
END LOOP;
CLOSE cIDName;
END;
/
関連事項