Приветствую!
Подскажите пож. нужно выполнить обновление полей("comments", "receipt", "date") в таблице(test_p ) из таблицы(ORG_P ) частями (примерно по 100 000 уникальных записей) т.к. в таблице(ORG_P ) более 3 млн.записей.
Т.е
1ый-раз обновляем 100к записей,
2ой-раз обновляем другие 100к не входящие в 1ый-раз
Есть пример, но он обновляет все записи по max("record_id") .
declare
v_count_rows number := 2; --кол-во обновляемых записей
v_maxid number;
v_id number := 0; - начальное значение
begin
select max("record_id") into v_maxid from test_p;
while v_id < v_maxid loop
update test_p t1
set ("comments", "receipt", "date") =
(select t2."comments", t2."receipt", t2."period_date"
from org_p t2
where "record_id" between v_id and
least(v_maxid, v_id + v_count_rows)
and t1."record_id" = t2."record_id")
--пров-ка на существование
where exists (select 1
from ORG_P t2
where "record_id" between v_id and
least(v_maxid, v_id + v_count_rows)
and t1."record_id" = t2."record_id");
v_id := v_id + v_count_rows;
end loop;
commit;
end;