首页 > 解决方案 > 批量收集和分配

问题描述

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

 1 .. count 

以及何时使用

first .. last

任何人都可以用forall insert,forall update和forall deletes的例子来解释一下吗?提前致谢

标签: oracleplsql

解决方案


PL/SQL 文档说:

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

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

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

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

现在您询问 FORALL 语句。我们可以在 bounds 子句中使用任何类型的集合(尽管只有关联数组是index by pls_integer)。限制是子句的下限和上限必须定义一系列连续的有效数字

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


推荐阅读