-1
Я пытаюсь обновить записи навалом. После запуска для всего обновления мне нужно вызвать процедуру и отправить все успешно обновленные идентификаторы как один из параметров процедуры. Все эти идентификаторы, для которых обновление не было выполнено из-за некоторой ошибки, не должны передаваться процедуре. Мой код ниже.Получение успешного обновления id из «для всех обновлений» в oracle
DECLARE
type emp_type is TABLE OF number;
EMP_ID EMP_TYPE;
lv_select varchar2(4000):='select employee_id from EMPLOYEE where dept_NO=1';
BEGIN
EXECUTE IMMEDIATE lv_select BULK COLLECT INTO emp_id ;
FORALL INDX IN 1 ..emp_id.COUNT SAVE EXCEPTIONS
UPDATE emp Set salary=salary+1000
where employee_id=emp_id(INDX);
PROC (
PAR1=>'abc',
par2=>emp_id(INDX),
par3=>'xyz'
);
EXCEPTION
WHEN OTHERS
THEN
FOR J IN 1 .. SQL%BULK_EXCEPTIONS.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE(SQLERRM (-SQL%BULK_EXCEPTIONS (j).ERROR_CODE));
END LOOP;
END;
Думаю, вам нужно будет изменить свой 'FORALL' на простой цикл' FOR', чтобы достичь этого. – GurV
Плюс ваш вызов процедуры в настоящее время не находится в цикле – GurV