Skip to content

记录类型

类型介绍

记录类型是由多种不同数据类型的元素组合成的数据类型,使用点号.访问记录的每个字段,例如用rec.id访问rec中名为id的成员。通常在PL/SQL中使用。

说明:

不支持为record数据添加新成员或删除已有成员。

语法格式

声明一个记录类型,然后声明一个该类型的变量并初始化为EMPTY:

sql
TYPE rec_name IS RECORD(c_1 type_1,
...,
c_n type_n);

var_name rec_name;

用构造函数初始化:

sql
var_name rec_name:=rec_name(c_1_value, ..., c_n_value);

声明一个变量,类型与表字段组合类型关联并初始化为EMPTY:

sql
var_name table_name%ROWTYPE;

声明一个变量,类型与游标类型关联并初始化为EMPTY:

sql
var_name cursor_name%ROWTYPE;

参数说明

  • rec_name:新定义的记录类型的名称。可以选择任何合法的标识符作为名称。
  • c_1, ..., c_n:记录中的各个字段(列)名称。
  • type_1, ..., type_n:各个字段的数据类型。这些数据类型可以是基础类型,也可以是用户自定义的数据类型。
  • var_name:基于rec_name类型的变量的名称。这个变量可以用来存储符合rec_name结构的数据。
  • c_1_value, ..., c_n_value:记录中的各个字段(列)的值。
  • table_name: 已经定义的表名称。
  • cursor_name: 已经定义的游标名称。

示例

定义了一个记录类型t_rec,并创建了一个该类型的变量var_rec。然后初始化这个变量,并使用DBMS_OUTPUT.PUT_LINE输出变量的内容。

sql
DECLARE
  -- 定义RECORD类型
  TYPE t_rec IS RECORD(
    id       NUMERIC,
    name     VARCHAR2,
    birthday DATE);
  -- 声明RECORD类型变量
  var_rec T_REC;
BEGIN
	-- 赋值
  var_rec := T_REC(10, 'David', '2001-02-03');
  -- 通过var_rec.[字段名]访问成员并输出
  DBMS_OUTPUT.PUT_LINE('Person Info: (' || var_rec.ID || ', ' ||var_rec.NAME || ', ' || var_rec.BIRTHDAY || ')');
END;
/
-- 输出
Person Info: (10, David, 2001-02-03 00:00:00)