正 文

在Oracle9i Release 2中使用PL/SQL的集合增强


www.7dspace.com  更新日期:2005-11-7 3:02:20  七度空间


记录可以以集合方式更新一个表中的数据。像插入语句一样,你以前必须单独地更新每一列:

    update dept
       set deptno = dept_row.deptno,
            dname = dept_row.dname,
              loc = dept_row.loc
     where deptno = dept_row.deptno;

而在Release 2中,你可以根据在记录中的位置来更新整条数据:

    update dept set row = dept_row where deptno = dept_row.deptno;

(注意“SET ROW”是一个新子句。)

你可以使用记录从DML语句的RETURNING子句中提取信息。通常在更新数据的时候保持一个本地副本以备后面的PL/SQL操作会比较有用。在 Release 2以前,我们可以在计算和调用完成之后使用RETURNING子句将数据存储到某个地方。而在Release 2中,你可以把数据存储到一条记录中。例如,下面是Release 2之前的作法:

Declare
    foorowfootab%rowtype;
begin
    insert into footab (foono,fooname) values (fooseq.nextval,'Foo')
      returning foono,fooname into foorow.foono,foorow.fooname;
end;

而现在你可以把插入语句简化为:

    insert into footab (foono,fooname) values (fooseq.nextval,'Foo')
        returning foono,fooname into foorow;

这些增强使得语法更加易读,并能帮助我们避免由于在返回语句中将表匹配错误所引起的程序错误。但是要记住这些增强要依赖于表和记录中第一列的物理位置。如果一个表的列的位置发生改变,那么列的顺序也会改变。因此,在一个数据库表中使用ROWTYPE匹配列比显式地列出列名要好。

本文作者:Scott Stephens已经在Oracle工作了13年有余,他曾经在技术支持、电子商务、市场和软件开发等部门工作。

2页,页码:[1] [2] 

上一篇:在Windows中使用Oracle objects for OLE
下一篇:在Oracle 9i里对基于函数的索引进行仅索引扫描
作者:Scott Stephens  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐