–更新大量数据
create or replace procedure large_update_operation as
type rowid_list is table of urowid index by binary_integer;
rowid_infos rowid_list;
i number;
cursor c_rowids is select rowid from t_objects;
begin
open c_rowids;
loop
fetch c_rowids bulk collect into rowid_infos limit 2000;
forall i in 1..rowid_infos.count
update t_objects set owner=to_char(length(owner)+1) where rowid=rowid_infos(i);
commit;
exit when rowid_infos.count<2000;
end loop;
close c_rowids;
end;
/
–插入大量数据
create or replace procedure large_insert_operation as
type rowid_list is table of urowid index by binary_integer;
rowid_infos rowid_list;
i number;
cursor c_rowids is select rowid from t_objects;
begin
open c_rowids;
loop
fetch c_rowids bulk collect into rowid_infos limit 2000;
forall i in 1..rowid_infos.count
insert into t_test select * from t_objects where rowid=rowid_infos(i);
commit;
exit when rowid_infos.count < 2000;
end loop;
close c_rowids;
end;
/