|
|
原帖由 rollingpig 于 2008-9-8 16:08 发表 ![]()
加一个for all, 效果会更好
declare
maxrows number default 1000;
row_id_table dbms_sql.Urowid_Table;
currcount_table dbms_sql.number_Table;
cursor cur_t2 is
select /*+ use_hash(T1,T2) parallel(T1,16) parallel_index(IX_T1_id2,16) */
T2.id2, T2.curr_count, T1.rowid row_id
from T1, T2
where T1.id2=T2.id2
order by T1.rowid;
v_counter number;
begin
v_counter := 0;
open cur_t2;
LOOP
EXIT WHEN cur_t2%NOTFOUND;
FETCH cur_t2 bulk collect into row_id_table,currcount_table limit maxrows;
forall i in 1 .. row_id_table.count
update T1 set curr_count=currcount_table(i)
where rowid= row_id_table(i);
commit;
end loop;
end;
/
参考:
http://space.itpub.net/1249/viewspace-64339
谢谢!我想应该会很有效。以前用BULK COLLECT的时候,经常莫名其妙地遇到ORA-21779错误,一直没有解决,那时是9.2.0.4。不知道9.2.0.8会不会遇到这个问题。 |
|