如何解决在Oracle中使用循环更新
BEGIN
FOR J IN (select DISTINCT S_NUMBER from WMWHSE3.NUMBER_SHIPTO)
LOOP
UPDATE wmwhse3.orders
SET
orders.susr4 = (select S_NUMBER from WMWHSE3.NUMBER_SHIPTO where S_NUMBER = J)
where orders.c_company = (select SHIPTO from WMWHSE3.NUMBER_SHIPTO where S_NUMBER = J)
and orders.orderkey in (SELECT a.orderkey FROM wmwhse3.orders a INNER JOIN wmwhse3.wavedetail b ON a.orderkey = b.orderkey where b.wavekey = '0000000086');
END LOOP;
END;
解决方法
看起来您正在使事情变得过于复杂(并使所有事情都比它本来要慢,因为逐行处理(循环)通常比集合处理要慢得多)。
因此,如果没有PL / SQL,单个update
呢?像这样:
update orders o set
o.susr4 = (select n.s_number
from number_shipto n
where n.shipto = o.c_company
)
where exists (select null from wavedetail b
where b.orderkey = o.orderkey
and b.wavekey = '0000000086'
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。