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;
/


関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト