Обратите внимание, что обычным антипаттерном является перехват всех исключений без их вызова. Возможно, вы также захотите рассмотреть автономную транзакцию, чтобы сохранить журнал ошибок после отката.
Так что вам, вероятно, будет лучше с чем-то вроде этого:
create or replace procedure Trial
is
procedure finally is
begin
--Block B ----
end;
procedure logerr (msg varchar2) is
PRAGMA AUTONOMOUS_TRANSACTION;
begin
insert into error_log values(msg);
commit;
end;
Begin
begin
---Block A--
EXCEPTION
when others then
logerr(SQLERRM);
finally;
raise;
end;
finally;
end;