记录中的每个成员的值分别赋给相应的列。现在,程序员可以在INSERT和UPDATE
语句中直接使用记录类型
在INSERT语句中使用记录插入数据
DECLARE
TYPE dept_rec IS RECORD(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)
);
--定义两个记录类型的变量
dept_row dept%ROWTYPE;
dept_norow dept_rec;
BEGIN
--为记录类型赋值
dept_row.deptno := 70;
dept_row.dname := '工程部';
dept_row.loc := '上海';
dept_norow.deptno := 80;
dept_norow.dname := '电脑部';
dept_norow.loc := '北京';
--插入%ROWTYPE定义的记录变量到表中
INSERT INTO dept
VALUES dept_row;
--插入普通记录变量的值到表中
INSERT INTO dept
VALUES dept_norow;
--向数据库提交对表的更改
COMMOIT;
END;
在UPDATE语句中使用记录更新数据
DECLARE
TYPE dept_rec IS RECORD(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)
);
dept_info dept_rec;
BEGIN
SELECT *
INTO dept_info
FROM dept
WHERE deptno = 80; --使用SELECT语句初始化记录类型
dept_info.dname := '信息管理部';--更新记录类型
UPDATE dept
SET ROW = dept_info
WHERE deptno = dept_info.deptno;--在UPDATE中使用记录变量更新表
END;
在DML语句中使用RETURNING返回受影响的行
DECLARE
TYPE dept_rec IS RECORD(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)
);
dept_info dept_rec; --定义记录类型的变量
dept_returning dept%ROWTYPE;--定义用于返回结果的记录类型
BEGIN
SELECT *
INTO dept_info
FROM dept
WHERE deptno = 80;
dept_info.dname := '信息管理部';
UPDATE dept
SET ROW = dept_info.deptno
WHERE deptno = dept_info.deptno
RETURNING deptno,
dnaem,
loc
INTO dept_returning
dept_info.deptno := 12;
dept_info.dname := '维修部';
INSERT INTO dept
VALUES dept_info
RETURNING deptno,
dname,
loc
INTO dept_returning;
DELETE FORM dept
WHERE deptno = dept_info.deptno
RETURING deptno,
dname,
loc
INTO dept_returning;
END;