前言:
现在我们对“oracle批量数据修改”大概比较关心,兄弟们都想要剖析一些“oracle批量数据修改”的相关资讯。那么小编也在网摘上搜集了一些对于“oracle批量数据修改””的相关内容,希望大家能喜欢,同学们一起来学习一下吧!一,业务场景
Oracle 更新数据时,数据库会对整个更新动作做一个事务,如果一次更新的记录太大会用完内存,导致影响业务运行。
二,解决办法
思路就是用游标处理每条数据,安需批量提交。
三、举例
我们要更新某个渠道的订单的所有商品的价格,我们每2万行提交一次。
参考脚本
declare v_count integer;begin v_count := 0; for i in ( --这里可以把要修复的数据放临时表,或者关联查询把数据准备好 select h.ID, i.ID as ITEM_ID, i.ORIGIN_PRICE from ORDERS h join ORDERS_ITEM i on h.ID = i.ORDER_ID where h.CHANNEL_ID = 'A' ) loop v_count := v_count + 1; update ORDERS_ITEM t set t.ACTUAL_PRICE = i.ORIGIN_PRICE where t.ID = i.ITEM_ID; if (MOD(v_count, 20000) = 0) -- 每两万行提交一次 then commit; end if; end loop; commit;end;
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #oracle批量数据修改 #oracle更新多表 #oracle 游标设置 #oracle游标设置多少 #oracle in最大数据量