操纵记录类型

在Oracle9i之前的版本中,是不能使用记录进行插入或更新的,开发人员必须将
记录中的每个成员的值分别赋给相应的列。现在,程序员可以在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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值