0

下面的代码没有完成,因为我试图更新一个有 2500 000 行的表。请查看下面的代码并告知可能是什么问题,以及如何提高性能以便完成更新。

开始

open C5_CUR;
loop
  FETCH C5_CUR
    into C5_ARRAY;
  exit when C5_CUR%notfound;

  open C4_CUR(C5_ARRAY.client_entity_number);
  loop
    FETCH C4_CUR
      into C4_array;
    exit when C4_CUR%notfound;

    update Wh_stg_clc.MARKETING_NEWSLETTER_REP n
       set n.family_count = C4_array.Family_Count
     where n.client_entity_number = C5_ARRAY.client_entity_number;
    dbms_output.put_line('Count has been updated');

   commit;

  end loop;
  close C4_CUR;

end loop;
commit;
4

1 回答 1

2

您没有发布游标声明。

无论如何:你在嵌套循环中做所有事情,在循环内提​​交。

  • 首先,COMMIT从循环中移除;在程序结束时留下一个
  • 如果可能,在单个 SQLUPDATE语句中完成所有操作,避免使用 PL/SQL
于 2018-10-11T07:20:29.513 回答