(Oracle PL/SQL)Come determinare l'errore di lancio di righe/valori nell'istruzione PL/SQL?
Se ho un'istruzione SQL semplice che sta gettando un errore, vale a dire:
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;
C'è un modo all'interno del blocco eccezione per determinare la riga/valore su cui la query ha riscontrato un errore? Mi piacerebbe essere in grado di registrarlo in modo che possa quindi entrare e modificare/correggere il valore specifico dei dati che causano l'errore.
In base alle risposte di seguito, non sembra essere un modo per determinare l'effettiva riga/valore che causa l'errore. La soluzione migliore sembra essere l'iterazione utilizzando un ciclo FOR. –
Domanda correlata: http://stackoverflow.com/questions/18458012/oracle-jdbc-how-to-know-which-row-throws-unique-key-constraint – Vadzim