FORALL 语句 FORALL 语句的一个关键性改进,它可大大简化代码,并且对于那些要在PL/SQL 程序中更新很多行数据的程序来说,它可显著提高其性能
1: 用FORALL 来增强DML 的处理能力 Oracle 为Oracle8i 中的PL/SQL 引入了两个新的数据操纵语言(DML)语句:BULK COLLECT和FORALL
这两个语句在PL/SQL 内部进行一种数组处理 ;BULK COLLECT 提供对数据的高速检索,FORALL 可大大改进INSERT、UPDATE 和DELETE 操作的性能
Oracle 数据库使用这些语句大大减少了 PL/SQL 与 SQL 语句执行引擎的环境切换次数,从而使其性能有了显著提高
使用BULK COLLECT,你可以将多个行引入一个或多个集合中,而不是单独变量或记录中
下面这个BULK COLLECT 的实例是将标题中包含 有"PL/SQL"的所有书籍检索出来并置于记录的一个关联数组中,它们都位于通向该数据库的单一通道中
DECLARE TYPE books_aat IS TABLE OF book%ROWTYPE INDEX BY PLS_INTEGER; books books_aat; BEGIN SELECT * BULK COLLECT INTO book FROM books WHERE title LIKE '%PL/SQL%';
END; 类似地,FORALL 将数据从一个PL/SQL 集合传送给指定的使用集合的表
下面的代码实例给出一个过程,即接收书籍信息的一个嵌套表,并将该 集合(绑定数组)的全部内容插入该书籍表中
注意,这个例子还利用了Oracle9i 的FORALL的增强功能,可以将一条记录直接插入到表中
BULK COLLECT 和FORALL 都非常有用,它们