PL/SQL 记录类型
2017-02-20 17:16
232 查看
PL/SQL支持符合类型,记录(record)是其中一种。记录表示了一组相关的数据集合,每一个数据项被成为一个域(field),每个域都有自己的数据类型与名称。
这种变量声明方式保证了PL/SQL的变量与数据库对象的同步。
定义记录类型后,类型的使用和其他类型没什么区别。
记录类型可以嵌套,即记录类型中的域本身也是记录类型。
对记录赋值
对记录进行
可以简化为
需要留意的是
声明记录
记录可以通过基于数据库对象声明,也可以自定义。基于数据库对象声明记录
记录类型变量可以直接基于表,视图,光标的属性%ROWTYPE声明,声明的记录类型变量将会有着和对应的数据库对象一样的结构,比如有着和表的列对应的域,每个域的名字和类型都和表中的定义一致。
table_based_record table_name%ROWTYPE;
这种变量声明方式保证了PL/SQL的变量与数据库对象的同步。
自定义记录类型
记录类型除了直接基于数据库对象导出外,也支持自定义TYPE record_type_name IS RECORD (field1 data_type1 [NOT NULL] := [DEFAULT VALUE], field2 data_type2 [NOT NULL] := [DEFAULT VALUE], ... fieldn data_type3 [NOT NULL] := [DEFAULT VALUE] ); variable_name record_type_name;
定义记录类型后,类型的使用和其他类型没什么区别。
记录类型可以嵌套,即记录类型中的域本身也是记录类型。
记录的操作
记录支出直接在记录层面操作,也支出在域的层面操作记录层面
可以直接对记录赋值,类型兼容的记录间也可以彼此赋值DECLARE record1 record_type; record2 record_type; BEGIN record1 := NULL; record2 := record1; END;
对记录赋值
NULL相当于对记录的每个域都赋值
NULL
域层面
通过使用点.引用记录中的域
DBMS_OUTPUT.put_line ( record.field); record.field = value_of_filed_type;
对记录进行
NULL检查以及比较需要在域层面上操作,也就是说,对记录类型进行
NULL检查,需要检查记录的每个域,同样的对记录类型进行比较也需要通过记录的域进行。
记录与SQL
记录可以用于查询,可以用于数据的修改。SELECT
通过INTO提取数据到记录变量中
SELECT column_list INTO record_variable FROM table_name WHERE id = 1;
column_list需要保证和
record_variable的域兼容,如果
record_variable是基于整表直接创建的(
record_variable table_name%ROWTYPE;),则还可以直接写为:
SELECT * INTO record_variable FROM table_name WHERE id = 1;
动态SQL
同SELECT一样,动态SQL也可以生成记录。语法为
EXECUTE IMMEDIATE ... INTO:
EXECUTE IMMEDIATE 'SELECT * FROM table_name WHERE id = 1' INTO record_variable
INSERT
记录类型也可以直接用于INSERT插入数据,原始的插入语句
INSERT INTO table_name (column_list) VALUES (expression_list)
可以简化为
INSERT INTO table_name VALUES record_variable;
record_variable需要和
table_name兼容。
UPDATE
同INSERT类似,记录类型也可以用于
UPDATE
UPDATE table_name SET ROW = record_variable
需要留意的是
SET ROW语法会更新主键,同样的,
record_variable需要和
table_name兼容。
相关文章推荐
- PL/SQL复合数据类型(集合与记录)
- pl/sql 复合类型,记录实例
- pl/sql记录类型
- pl/sql复合数据类型_pl/sql记录类型
- oracle复合数据类型学习五——pl/sql记录
- PL/SQL:记录类型 (定义,使用,注意点)
- PL/SQL_使用复合数据类型1(PL/SQL记录)
- oracle pl/sql之sql中的复合变量之记录类型
- Oracle PL/SQL开发基础(第十六弹:记录类型)
- PL/SQL-记录类型
- 使用复合数据类型——PL/SQL记录
- 【Oracle】PL/SQL——基本语法,记录类型和控制流程
- pl/sql记录类型
- Oracle PL/SQL 程序设计读书笔记 - 第11章 记录类型
- pl/sql 记录(Record)类型
- PL/SQL中用光标查询多条记录
- 第十章 PL/SQL对象类型
- 记录一个PL/SQL调试语句
- PL/SQL数据类型和效率分析
- 如何用SQL查询语句获取Oracle表 树形结构的记录(PL/SQL )