记录类型
类型介绍
记录类型是由多种不同数据类型的元素组合成的数据类型,使用点号.
访问记录的每个字段,例如用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)