为什么oracle 隐式游游标+rowid进行存储过程批量更新慢,造成锁表,单独在sql窗体中执行秒过
发布网友
发布时间:2022-04-08 22:59
我来回答
共1个回答
热心网友
时间:2022-04-09 00:28
for 里的语句条件不对,A、B表都没链接条件
另外你这种loop写法还不如直接写一个update,反正也没有做到分批提交。
要分批提交,最简单定义个变量,每次循环+1,5000一次commit这样写
if mod(i,5000)= 0 then
commit;
endif;追问最开始使用update + exisits 进行条件判断进行写操作的,但是被锁表了。 后来又改为游标的。游标中是使用rowid作为条件的。但是实现的效果不理想。中间有加每1W条进行一次commit的操作。依旧长时间锁表,存储过程长时间处于等待状态。是否可能是数据库主机的内存不足造成?