declare
record_count NUMBER;
is_commnum NUMBER;
begin
-- 初始化参数
record_count := 0;
is_commnum := 500; -- 默认500次,commit一次
FOR rec IN (SELECT * FROM TABLENAME WHERE ....) LOOP
record_count := record_count + 1;
INSERT INTO TABLENAME(...) VALUES (...);
UPDATE TABLENAME SET COL1 = values1, ..... WHERE COLn = xxxxx;
GOTO is_need_commit;
<<is_need_commit>>
out_flag := '0';
IF record_count MOD is_commnum = 0 THEN
COMMIT;
END IF;
END LOOP;
COMMIT:
end;