Oracle 10g 對 FORALL 批量綁定語法進行重大增強,引入 INDICES OF 和 VALUES OF 子句,解決稀疏集合與跨集合索引引用難題,大幅提升批量 DML 靈活性與性能。
SAVE EXCEPTIONS 捕獲異常的開銷,直接跳過無效索引。場景:ALL_ORDERS 表存儲所有訂單。需分離新訂單插入 NEW_ORDERS,歸檔舊訂單至 ORDERS_ARCHIVE。
CREATE TABLE all_orders (
order_id NUMBER(12) PRIMARY KEY,
order_date DATE,
order_mode VARCHAR2(8),
customer_id NUMBER(6),
order_status NUMBER(2),
order_total NUMBER(8,2),
sales_rep_id NUMBER(6),
promotion_id NUMBER(6)
);
CREATE TABLE new_orders ( ... 同結構 ... );
CREATE TABLE orders_archive ( ... 同結構 ... );
l_orders。order_date 和 order_status 判斷:l_archive_idx 集合,並從 l_orders 刪除(形成稀疏集合)。FORALL i IN INDICES OF l_orders INSERT INTO new_orders VALUES l_orders(i);FORALL i IN VALUES OF l_archive_idx INSERT INTO orders_archive VALUES l_orders(i);Oracle Database 10g Release 1 (10.1) 及以上版本。