在PL/SQL循环中执行数据操作语言(DML)是一件费时的工作,因为每次循环都要由PL/SQL引擎转向SQL引擎。应用FORALL是一个更好的方法,它一次性向SQL语句提交一组临时值。 在Oracle 10g前,FORALL语句的语法只能处理连续性的数组元素:
| FORALL index_name IN lower_bound ..upper_bound sql_statement; |
这意味着:在以前,使用FORALL的嵌套表不能删除待处理数组中间的元素,而且数组项必须进行连续处理。Oracle 10g解决了这两方面的问题,并增加了INDICES OF和VALUES OF子句。 INDICES OF子句替代lower_bound ..upper_bound,说明所有要处理的有效索引值,即使这些值之间存在间隔。就像是这样:
| FORALL index_name IN INDICES OF collection_nameBETWEEN lower_bound AND upper_boundsql_statement; |
您仍然可以应用BETWEEN语法限制要处理的范围,这是一个可选的内容。 VALUES OF子句帮助您以不同顺序处理主要的集合。您再建立另一个集合,其中只包含您要处理的索引号码,这些号码以您希望处理的顺序排列。然后该语句变为:
| FORALL index_name IN VALUES OF index_collectionsql_statement; |
在Access数据库中使用SQL Server语句快速清除SQLServer日志的两种方法相关资讯 oracle
- [INS-32052] Oracle基目录和Oracle (07/22/2014 07:41:41)
- Oracle 4个大对象(lobs)数据类型 (02/03/2013 12:33:05)
- Oracle按时间段分组统计 (07/26/2012 10:36:48)
| - [Oracle] dbms_metadata.get_ddl的 (07/12/2013 07:37:30)
- Liferay Portal 配置使用Oracle和 (07/31/2012 20:07:18)
- Concurrent Request:Inactive (07/20/2012 07:44:05)
|
本文评论 查看全部评论 (0)