FORALL 语句 (PL/SQL)
FORALL 语句对数组的所有元素或数组中某个范围的元素执行数据更改语句。
调用
只能在 PL/SQL 块中指定此语句。
权限
此语句的授权标识所拥有的特权必须包括调用 FORALL 语句中指定的数据更改语句所需的所有特权。
语法
描述
- index-variable
- 标识用作数组下标的名称。它被隐式地声明为 INTEGER,并且只能在 FORALL 语句中引用。
- lower-bound .. upper-bound
- 标识可以指定给 index-variable 的下标值的范围,并且 lower-bound 小于 upper-bound。范围表示从 lower-bound 开始每次递增 1 并直到 upper-bound 为止(包括上限)的每个整数值。
- INDICES OF indexing-array
- 标识 indexing-array 所标识的数组的数组下标值集合。如果 indexing-array 是关联数组,那么数组下标值必须可指定给 index-variable 并且不能是稀疏集合。
- VALUES OF indexing-array
- 标识 indexing-array 所标识的数组的元素值集合。元素值必须可指定给 index-variable,并且不能是无序稀疏集合。
- INSERT 语句
- 指定要对每个 index-variable 值执行的 INSERT 语句。
- 搜索型 DELETE 语句
- 指定要对每个 index-variable 值执行的搜索型 DELETE 语句。
- 搜索型 UPDATE 语句
- 指定要对每个 index-variable 值执行的搜索型 UPDATE 语句。
- EXECUTE IMMEDIATE 语句
- 指定要对每个 index-variable 值执行的 EXECUTE IMMEDIATE 语句。
注
- FORALL 语句处理不是原子处理。如果在 FORALL 语句中进行迭代时发生错误,那么不会以隐式方式回滚已处理的任何数据更改操作。当 FORALL 语句发生错误时,应用程序可以使用 ROLLBACK 语句来回滚整个事务。
示例
以下示例演示基本 FORALL 语句:
FORALL x
IN in_customer_list.FIRST..in_customer_list.LAST
DELETE FROM customer
WHERE cust_id IN in_customer_list(x);