(Oracle PL/SQL)Jak określić błąd rzucania wiersz/wartość w instrukcji PL/SQL?
Jeśli mam prostą instrukcję SQL, która rzuca błąd, a mianowicie:
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;
Czy jest jakiś sposób w bloku wyjątków określić wiersz/wartość, na której zapytanie napotyka błąd? Chciałbym móc go zarejestrować, aby następnie mógł wejść i zmodyfikować/poprawić konkretną wartość danych powodującą błąd.
Na podstawie poniższych odpowiedzi nie wydaje się, aby można było określić faktyczny wiersz/wartość powodującą błąd. Najlepszym rozwiązaniem wydaje się być iteracja za pomocą pętli FOR. –
Powiązane pytanie: http://stackoverflow.com/questions/18458012/oracle-jdbc-how-to-know-which-row-throws-unique-key-constraint – Vadzim