Hallo,
ich habe eine Frage zu Oracle, vielleicht kann mir ja jemand einen Tipp geben?
Es existieren 2 Tabellen:
table1 -> ohne Schlüssel, einige doppelte Datensätze
table2 -> mit Schlüssel, leer
Nun habe ich eine kleine Stored Procedure, die alles aus table1 selektiert und in table2 schreibt.
Sollten dabei Fehler auftreten (durch KEyverletzung), werden diese Fehler in eine fehler_log-Tabelle geschrieben.
Das ganze funktioniert wunderbar, aber: Die protokollierten Fehler sind sehr allgemein, eben Oracle Fehlercodes/ MEssages.
Ich bräuchte genau diesen Datensatz, der nicht geschrieben werden konnte in meiner log-Tabelle.
Ist das irgendwie möglich von einem normalen INSERT INTO table2 select * from table1; die fehlerhaften Datensätze abzufangen und rauszuschreiben?
Vielleicht hat irgendwer einen Tipp oder einen Hinweis, was noch fehlt?
Viele Grüße,
Tim
ich habe eine Frage zu Oracle, vielleicht kann mir ja jemand einen Tipp geben?
Es existieren 2 Tabellen:
table1 -> ohne Schlüssel, einige doppelte Datensätze
table2 -> mit Schlüssel, leer
Nun habe ich eine kleine Stored Procedure, die alles aus table1 selektiert und in table2 schreibt.
Sollten dabei Fehler auftreten (durch KEyverletzung), werden diese Fehler in eine fehler_log-Tabelle geschrieben.
Das ganze funktioniert wunderbar, aber: Die protokollierten Fehler sind sehr allgemein, eben Oracle Fehlercodes/ MEssages.
Ich bräuchte genau diesen Datensatz, der nicht geschrieben werden konnte in meiner log-Tabelle.
Ist das irgendwie möglich von einem normalen INSERT INTO table2 select * from table1; die fehlerhaften Datensätze abzufangen und rauszuschreiben?
Code:
create or replace procedure SP_Test as BEGIN DECLARE SZSQL varchar2(2000); BEGIN insert into table2 select * from table1 Commit; EXCEPTION when others then rollback; SZSQL := sqlerrm; insert into log_table(tbname, code, iden) values('abc', '123', SZSQL); END; END;
Vielleicht hat irgendwer einen Tipp oder einen Hinweis, was noch fehlt?
Viele Grüße,
Tim
Comment