Oracle 10g中如何用FIRALL处理某些非连续数组

数据库 Oracle
以下的文章主要是向大家介绍的是Oracle 10g中用FIRALL来处理某些非连续数组的实际操作步骤,以下就是正文的具体内容的描述。

我们今天要向大家介绍的是Oracle 10g中用FIRALL来处理某些非连续数组,在PL/SQL循环中来执行相关数据的操作语言(DML)其实是一件很费时的工作,因为每次循环都要由PL/SQL引擎转向SQL引擎。应用FORALL是一个更好的方法,它一次性向SQL语句提交一组临时值。

在Oracle 10g前,FORALL语句的语法只能处理连续性的数组元素:

  1. FORALL index_name IN lower_bound ..upper_bound sql_statement; 

这意味着:在以前,使用FORALL的嵌套表不能删除待处理数组中间的元素,而且数组项必须进行连续处理。Oracle 10g解决了这两方面的问题,并增加了INDICES OF和VALUES OF子句。

INDICES OF子句替代lower_bound ..upper_bound,说明所有要处理的有效索引值,即使这些值之间存在间隔。就像是这样:

 

  1. FORALL index_name IN INDICES OF collection_name  
  2. BETWEEN lower_bound AND upper_bound  
  3. sql_statement;  

 

您仍然可以应用BETWEEN语法限制要处理的范围,这是一个可选的内容。

VALUES OF子句帮助您以不同顺序处理主要的集合。您再建立另一个集合,其中只包含您要处理的索引号码,这些号码以您希望处理的顺序排列。然后该语句变为:

 

  1. FORALL index_name IN VALUES OF index_collection  
  2. sql_statement;  

 

列表A中是一个应用HR样本模式的例子。我将部门名称加载到内存中的一个嵌套表内,然后在里面搜索与IT有关的部门。每搜索到一个,我保存它的表输入项索引。VALUES OF子句结合这组索引对表中的每个部门进行INSERT语句处理。(这只是一个示例;用一个单独的SQL语句也可以进行同样的处理。)列表B中是输出结果。

以上的相关内容就是对Oracle 10g中用FIRALL处理非连续数组的介绍,望你能有所收获。

文章出自:http://database.ctocio.com.cn/280/9001780.shtml

【编辑推荐】

  1. Oracle细粒度的访问控制的基本工作方式
  2. 浅析:Oracle jdbc分页效率的测试
  3. Oracle数据库的异构服务原理描述
  4. Oracle移植到mysql中应注意的事项
  5. 联机备份Oracle数据实施是什么?
责任编辑:佚名 来源: ctocio
相关推荐

2010-04-22 16:26:07

Oracle 10g

2010-04-16 09:11:53

应用FORALL

2009-04-27 13:26:41

Oracle 10gRAC链接错误

2010-04-14 16:09:51

Oracle 10g归

2011-04-15 09:53:37

Oracle 10gSQL优化

2011-05-13 11:21:51

linuxoracle 10g安装

2011-03-25 16:10:58

oraclenagios

2011-08-17 16:52:11

Oracle 10gLogmnr

2010-03-30 19:31:25

Oracle 10g

2009-11-19 10:32:41

Oracle 10g服

2010-04-13 10:07:19

Oracle 10G

2010-04-30 17:50:25

2010-04-14 14:40:32

Oracle 10g

2010-04-28 18:06:32

Oracle 10g

2010-05-07 18:28:36

Oracle 10g

2010-04-29 15:50:35

2009-10-26 13:54:29

Oracle 10g用

2011-07-15 15:39:02

主机身份证明oem工具

2010-08-04 09:03:53

PerlOracle 10g

2010-04-26 10:32:55

Oracle 10g
点赞
收藏

51CTO技术栈公众号