SAVE Exceptions
Tipp 44
Thema: EXCEPTION
Datenbank-Version: RDBMS 8.x
Erstellt am 07.10.19
Bearbeitet am 07.10.19
SQL%BULK_EXCEPTIONS.COUNT
SQL%BULK_EXCEPTIONS(i).ERROR_INDEX
SQL%BULK_EXCEPTIONS(i).ERROR_CODE
DECLARE
TYPE emp_rec IS RECORD(empno number, ename varchar2(100));
TYPE emp_tab_type IS TABLE OF emp_rec
INDEX BY BINARY_INTEGER;
t_emp emp_tab_type;
BEGIN
--Array füllen
t_emp(1).empno:=8010;
t_emp(1).ename:='MARCOOOOOOOOOOOO';
t_emp(2).empno:=8011;
t_emp(2).ename:='MARCO';
t_emp(3).empno:=8012;
t_emp(3).ename:='MARCOsafsafsdfsdfsdfsd';
FORALL i IN 1 .. t_emp.count SAVE EXCEPTIONS
INSERT INTO emp (empno,ename) values (t_emp(i).empno,t_emp(i).ename);
EXCEPTION WHEN OTHERS THEN
for i in 1 .. sql%bulk_exceptions.count loop
dbms_output.put_line('Fehler ' || i || ' aufgetreten an Stelle:'||
SQL%BULK_EXCEPTIONS(i).ERROR_INDEX||' Wert:'||t_emp(SQL%BULK_EXCEPTIONS(i).ERROR_INDEX).ename);
dbms_output.put_line('Oracle error is ' || SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
END loop;
END;
/
In der Array Verarbeitung stehen beim zurückschreiben aus einem Array in eine Tabelle folgende Funktionen zur Verfügung:
- SQL%BULK_EXCEPTIONS.COUNT
- SQL%BULK_EXCEPTIONS(i).ERROR_INDEX
- SQL%BULK_EXCEPTIONS(i).ERROR_CODE