Mam następującą procedurę, która jest wykorzystywana przez niektóre aplikacje:Jak ponownie wygenerować wyjątek pl/sql w bloku obsługi wyjątków?
procedure p1
is
begin
bla bla bla;
end;
Ale nie ma blok obsługi wyjątków. Więc aplikacje zostały napisane zgodnie z tą funkcją.
Teraz muszę zalogować błędy w p1. Ale nie powinno to wpływać na aplikacje korzystające z tej procedury.
tak:
procedure p1
is
begin
bla bla bla;
exception when others then
log_error(sqlcode, sqlerrm);
raise_new_exception (sqlcode, sqlerrm);
end;
W przypadku raise_application_error pierwszy parametr powinien być w zakresie [-20000, -20999]. Więc jeśli podniesie wyjątek no_data_found, nie może podnieść tego błędu.
W przypadku exception_init drugi parametr nie powinien być zmienny. Musi to być literał numeryczny.
PS: Jako tymczasowe rozwiązanie, Używam wykonać natychmiastową
@AlexPoole Link nie działa. – ceving
@ceving - dziękuję, dodałem bieżący link na żywo do odpowiedzi, aby łatwiej było go aktualizować w przyszłości. –
prądu [link] (http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/07_errs.htm#1049) –