declare
maxrows number default 5000;
row_id_table dbms_sql.Urowid_Table;
p_id_table dbms_sql.Number_Table;
cursor acnt_first_cur is
select /*+ use_hash(t1,t2) parallel(t1,4) parallel(t2,4) */
t2.starttime, t1.rowid
from newxlc_coursedeliver t1, newxlc_contract t2
where t1.contractid = t2.id
order by t1.rowid;
begin
open acnt_first_cur;
loop
exit when acnt_first_cur%notfound;
fetch acnt_first_cur bulk collect
into p_id_table, row_id_table limit maxrows;
forall i in 1 .. row_id_table. count
update newxlc_coursedeliver
set login_region = p_id_table(i)
where rowid = row_id_table(i);
commit ;
end loop;
end ;
这是csdn一个老哥的写法,没搞懂其中的原理,我的数据库中因为关联的字段类型不一致 所以并不能完全套用。 记录下学学 原理方面在研究一下