大量收集和forall

时间:2018-06-06 13:01:24

标签: oracle plsql

使用光标,批量收集和forall,我试图了解何时使用

 1 .. count 

以及何时使用

first .. last

有人可以解释一下forall insert,forall update和forall deletes的例子吗?提前致谢

1 个答案:

答案 0 :(得分:2)

PL/SQL documentation says

  

对于非空的varray,FIRST始终返回1.对于每个   varray,LAST总是等于COUNT。

关联数组的情况有所不同,其中FIRST和LAST引用INDEX BY索引的最小值和最大值。

嵌套表的情况也不同。文档再次说:

  

对于嵌套表,COUNT等于LAST,除非您从中删除元素   嵌套表的中间,在这种情况下COUNT小于   LAST

现在你问FORALL语句。我们可以在bounds子句中使用任何类型的集合(尽管只有index by pls_integer的关联数组)。限制是该子句的下限和上限必须定义series of consecutive valid numbers

因此,如果您的集合是嵌套表或varray,请使用1 .. whatever.count()。如果您的集合是一个关联数组,其索引不是以1开头但仍然连续使用whatever.first() .. whatever.last()。否则,请使用indices ofvalues of