网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle 最具伸缩性和成本效益的数.
.创建Standby Database.
.oracle数据库性能监控的SQL.
.怎样查看init.ora文件?.
.Oracle 数据库备份与恢复专题.
.甲骨文宣布CFO辞职 可能获320万美.
.从Excel电子表格生成外部表.
.oracle使用人员所需要的一些参数.
.Oracle10g对回滚操作时间的准确评.
.Oracle:大数据的备份.
.讲解Oracle表碎片的具体起因及解.
.在Oracle网络结构中解决连接问题.
.PL/SQL的一些语法.
.如何使sendmail支持大写的用户名.
.Linux 上的邮件网关(杀病毒)An.
.Oracle获评客户服务管理软件领导.
.实例讲解删除表空间时存在的效率.
.Oracle的Index.
.怎样保持Oracle数据优良性能的若.
.哪些因素可以影响Oracle数据库的.

Oracle PL/SQL集合增强

发表日期:2008-2-9


Oracle Release 2 非常有力地增强了PL/SQL 集合功能,它可以对以前的发布版本进行代码维护。例如,可以在Release 2 中将PL/SQL 集合用作一个单一的参数,从而避免了使用一长串单个的字段作为参数。 另外一个优点是记录的集合现在可以是BULK COLLECTION INTO 子句的目标。而在Release 2 以前,我们必须为返回的每个列创建一个集合。例如: Declare
    type deptno_coll is table of dept.deptno%type;
    type dname_coll is table of dept.dname%type;
    type loc_coll is table of dept.loc%type;
    deptno_list deptno_coll;
    dname_list dname_coll;
    loc_list loc_coll;
begin
    select * bulk collect into deptno_list,dname_list,loc_list from dept;
end; 在Release 2中变成了: Declare
    type dept_coll is table of dept%rowtype;
    dept_list dept_coll;
begin
    select * bulk collect into dept_list from dept;
end; 注重这里不再是对字段名的引用。假如DEPT 表的字段个数或者名称被修改,也不需要对第二段示例代码进行改动。这段代码还比旧版本易于维护。然而,应用程序需要一个Release 2 数据库来编译。 现在可以使用记录以集合方式将一行数据插入到一个表中。在Release 2 之前,必须插入到表中一个PL/SQL 记录然后再单独地确定每一个字段,作法如下: Declare
    dept_row dept%rowtype;
begin
    /* populate dept_row . . . */
    insert into dept values (dept_row.deptno,dept_row.dname,dept_row.loc);
end; 而在Release 2中可以将插入语句简化为:     insert into dept values dept_row; 记录可以以集合方式更新一个表中的数据。像插入语句一样,以前必须单独地更新每一个字段:     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
    foorow footab%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 匹配字段比显式地列出字段名要好。

上一篇:我的oracle笔记七(其他) 人气:756
下一篇:Oracle中求出本星期第一天和第七天的日期 人气:877
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐