
在 Oracle PL/SQL 中,复合数据类型是一种包含多个内部组件的数据结构,每个组件可独立存储数值,因此一个复合变量可同时容纳多个值。与数据库内置类型不同,复合类型需先定义,方可多次用于声明变量,提高了代码的复用性与结构化程度。
复合数据类型主要包括记录、索引表、嵌套表与数组。其中,记录(RECORD)是由一组相关的数据项构成的逻辑单元,每项均有自己的名称和数据类型;而表类型(如索引表、嵌套表)是数据的集合,支持通过键或索引进行整体引用与操作。这些类型一经定义,便可重复使用,特别适合于处理多字段数据集合或结果集。
PL/SQL 记录类型详解
记录是将多个字段组合为单一逻辑单元的数据结构,每个字段可存储不同数据类型,常用于封装查询结果的一行数据,或传递结构化信息。其特点包括:
一个记录可包含多个字段;
支持初始值赋值,可用 NOT NULL 约束,未初始化的字段默认为 NULL,也可使用 DEFAULT 设置默认值;
记录类型可在块、子程序或包的声明部分定义,并支持嵌套定义,即一个记录可作为另一个记录的组件;
记录类型增强了程序的模块性和可读性。
记录类型定义语法如下:
TYPE type_name IS RECORD (
field_name {datatype | variable%TYPE | table.column%TYPE | table%ROWTYPE}
[[NOT NULL] {:= | DEFAULT} expr]
[, ...]
);示例:
以下示例定义了一个基于 emp 表结构的记录类型:
TYPE emp_record_type IS RECORD ( empno emp.empno%TYPE, ename emp.ename%TYPE, job VARCHAR2(9) ); emp_record emp_record_type;
该类型可进一步用于声明变量,存储员工信息,实现数据的结构化处理。
综上所述,PL/SQL 的复合数据类型,尤其是记录类型,为复杂数据建模提供了灵活而高效的方式,有助于编写层次清晰、易于维护的数据处理程序。