(Oracle PL/SQL)
Wenn ich eine einfache SQL-Anweisung habe, die einen Fehler auslöst, d.h.:
DECLARE
v_sql_errm varchar2(2048);
BEGIN
UPDATE my_table SET my_column = do_something(my_column)
WHERE my_column IS NOT NULL;
EXCEPTION
when others then
-- How can I obtain the row/value causing the error (unknown)?
v_sql_errm := SQLERRM;
insert into log_error (msg) values ('Error updating value (unknown): '||
v_sql_errm);
END;
Gibt es eine Möglichkeit, innerhalb des Ausnahmeblocks die Zeile/den Wert zu bestimmen, bei der/dem die Abfrage auf einen Fehler stößt? Ich möchte den Fehler protokollieren können, damit ich dann den spezifischen Datenwert, der den Fehler verursacht, ändern/korrigieren kann.
1 Stimmen
Ausgehend von den nachstehenden Antworten scheint es keine Möglichkeit zu geben, die tatsächliche Zeile/den tatsächlichen Wert, die den Fehler verursachen, zu ermitteln. Die beste Lösung scheint die Iteration mit einer FOR-Schleife zu sein.
0 Stimmen
Verwandte Frage: stackoverflow.com/questions/18458012/