实际上,我正在尝试更新 1000 条记录,并且我正在为每 5000 条记录进行提交。但由于我对 varray 的限制,我得到了上述错误。请提供数组数据类型的替代方案,甚至将 100k 键值存储为数组!下面的代码示例。
DECLARE
v_initial number(6):=0;
v_final number(6):=5000;
-- TOtal number of records V_COUNT
type lnum IS VARRAY(1000) OF INTEGER; -- change total number of records
iid lnum;
v_maxnum number(8):=0;
BEGIN
iid:=lnum(); -- here 1000 values will be given
v_maxnum := iid.count;
FOR i in v_initial..v_maxnum LOOP
UPDATE table SET status='E' WHERE pkey=iid(i);
IF i=v_final THEN
COMMIT;
v_initial:=v_final+1;
v_final:=v_final+5000;
END IF;
IF i=v_maxnum THEN
commit;
END IF;
EXIT WHEN i= v_maxnum;
END LOOP;
END;
/