Oracle пытается обновить таблицу с данными со значениями счетчика - PullRequest
0 голосов
/ 11 октября 2018

приведенный ниже код не завершается, так как я пытаюсь обновить таблицу с 2500 000 строк.Ознакомьтесь с приведенным ниже кодом и сообщите, в чем может быть проблема, и как я могу улучшить производительность, чтобы обновление могло быть завершено.

begin

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;

1 Ответ

0 голосов
/ 11 октября 2018

Вы не публиковали объявления курсора.

В любом случае: вы делаете все во вложенных циклах, следуя внутри цикла.

  • прежде всего, удалить COMMIT из цикла;оставьте один в конце процедуры
  • , если возможно, все делайте в одном выражении SQL UPDATE, избегая PL / SQL
...