咨詢一個各位老師,我有幾千條update 陳述句,放到begin .... end的陳述句塊中,執行效率比較底,不知道有什么好的方法嗎?
這些update 都是單表更新,如 update aa set x=y where id=z 這樣簡單的。我測驗了陳述句塊中放6000行這樣的Update陳述句,執行完要7分鐘,3000條要1分多鐘,我不知道陳述句塊中放多少陳述句是最合理的。放1萬條ORACLE直接給我報錯,錯誤 如下:ORA-04030,在嘗試分配4088位元組(PLS CGA hp.pdzgM64_New_Link)時行程記憶體不足。
uj5u.com熱心網友回復:
用 游標 加forall 分批次更新uj5u.com熱心網友回復:
如果都 是 update aa set x=y where id=z 這樣的,可以考慮改成系結變數形式的,看看能不能正則替換一下。declare
v_sql varchar2(1000);
begin
v_sql := 'update aa set x = :1 where id = :2';
execute immediate v_sql using 'ccc', 100;
execute immediate v_sql using 'ddd', 200;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63590.html
標籤:開發
