PL/SQL RECORD (レコード)

Oracle PL/SQLのRECORD (レコード)の使い方を解説します。

レコードの定義

レコードを宣言するには、あらかじめレコードを定義しておく必要がある。レコードの定義は次の構文で行う。

TYPE type_name IS RECORD (field_declaration [, field_declaration ...]);
type_name
型指定子
field_declaration
フィールドの宣言を以下に示すいずれかの構文で行う。
field type
field type := expr
field type DEFAULT expr
field type NOT NULL := expr
field type NOT NULL DEFAULT expr
field
フィールドの名前
type
フィールドのデータ型
NOT NULL
NULLになることができない制約を付ける。NOT NULL制約を付ける場合、初期値を指定しなければならない。
expr
初期値を表す式

レコードの宣言

レコードを宣言するには、あらかじめレコードを定義しておく必要がある。レコードの宣言は次の構文で行う。

record type;
record table%ROWTYPE;
record
レコードの名前
type
型指定子
table_name%ROWTYPE
指定した表と同じフィールド(列)を持つレコードを宣言する。

レコードの使用例

DECLARE
  TYPE example_type IS RECORD (
      empno    NUMBER NOT NULL DEFAULT 1,
      ename    VARCHAR2(10),
      job      VARCHAR2(10),
      mgr      NUMBER,
      hiredate DATE,
      sal      NUMBER,
      comm     NUMBER,
      deptno   NUMBER
  );
  example_record example_type;
BEGIN
  SELECT * INTO example_record FROM emp WHERE empno = 1000;

レコードがテーブルと同じ構造の場合は、レコードの定義は不要で、レコードの宣言にROWTYPE属性を使用することができる。

DECLARE
  example_record emp%ROWTYPE;
BEGIN
  SELECT * INTO example_record FROM emp WHERE empno = 1000;