oracle - 批量收集和分配
问题描述
使用光标,批量收集和 forall,我试图了解何时使用
1 .. count
以及何时使用
first .. last
任何人都可以用forall insert,forall update和forall deletes的例子来解释一下吗?提前致谢
解决方案
对于非空的 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 of
or values of
。
推荐阅读
- angular - 聚焦第一个无效输入
- javascript - 如何使用 d3 将 URL 列表映射到 JSON 对象列表?
- node.js - 如何使用nodejs bitbucket包中的具体参数_body?
- node.js - Node JS 分子内部通信
- php - 错误:如何获取外键 laravel 8 的信息
- reactjs - 根据 div 宽度和高度计算变换比例
- java - 在 JPA 中映射为实体的关系表
- reactjs - 使用模态内的 iframe 对丢失的 onKeyPress 事件做出反应
- android - 成功改造调用后,Android RecyclerView 显示为空
- django - 如何在 django 中获取最新的第二行?