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;