记录类型最初从Oracle7中被引入,这种类型有些类似于C语言或PASCAL语言中的结构。
DECLARE
--定义记录类型
TYPE t_emp IS RECORD (
v_empno NUMBER,
v_ename VARCHAR2(20),
v_job VARCHAR2(9),
v_mgr NUMBER(4),
v_hiredate DATE,
v_sal NUMBER(7,2),
v_comm NUMBER(7,2),
v_deptno NUMBER(2)
);
--声明记录类型的变量
emp_info t_emp;
BEGIN
--从emp表中取出字段值赋给记录类型
SELECT *
INTO emp_info
FROM emp
WHERE empno = :empno;
--向emp_copy表中插入记录类型的值
INSERT INTO emp_copy
VALUES emp_info;
EXCEPTION
WHEN OTHERS
THEN
NULL;
DECLARE
--定义记录类型
TYPE t_emp IS RECORD (
v_empno NUMBER,
v_ename VARCHAR2(20),
v_job VARCHAR2(9),
v_mgr NUMBER(4),
v_hiredate DATE,
v_sal NUMBER(7,2),
v_comm NUMBER(7,2),
v_deptno NUMBER(2)
);
--声明记录类型的变量
emp_info t_emp;
BEGIN
--从emp表中取出字段值赋给记录类型
SELECT *
INTO emp_info
FROM emp
WHERE empno = :empno;
--向emp_copy表中插入记录类型的值
INSERT INTO emp_copy
VALUES emp_info;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
由于记录是一种自定义的复合类型,因此在语句块的声明区,首先声明了一个记录类型t_emp,
然后声明了t_emp类型的变量emp_info.在SELECT语句中,直接操纵记录类型的变量对记录进行赋值,
然后INSERT语句也将记录类型的变量当作一个单元,直接进行槽中,可以看到整个代码变得清晰易
理解,也容易维护了。