-1
일괄 적으로 레코드를 업데이트하려고합니다. 모든 업데이트를 실행 한 후에 프로 시저를 호출하고 프로 시저에 매개 변수 중 하나 인 성공적으로 업데이트 된 ID를 보내야합니다. 어떤 오류로 인해 수행되지 않은 모든 ID는 프로 시저에 전달하면 안됩니다. 내 코드는 아래와 같습니다.oracle에서 "for all update"의 ID를 성공적으로 업데이트하는 중
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