更新第一个10000行,然后更新下一个10000等



我的桌子有接近800万行。有没有办法更新第一个10000记录,然后是下一个10000记录等等。

我确实在此处检查了 select 语句。但是找不到任何解决方案更新语句。有人可以帮忙吗?希望这将对未来有需要的人有帮助。

更新:数据库版本:12c

如果您知道已经更新了哪些记录,这是一个简单的解决方案。至少它将使您的交易范围保持在合理的规模。

DECLARE
    i number := 1;
BEGIN
    while i > 0 loop
      UPDATE < your table >
         SET col = <value>
         WHERE rownum < 100000
           AND <some statement that exclude already updated records>
      i := sql%rowcount;
      commit;
    end loop;
END;

最新更新