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