У меня есть следующая процедура:
procedure proc1()
....
insert into my_text (a, b, c ) values ( d, e, f );
if (SQL%ROWCOUNT <> 1) then
errn := -20092 ;
else
errn := 0 ;
end if ;
end if;
err_pkg.log (errn);
<<< NO EXCEPTION SECTION >>>
END PROCEDURE proc1()
Но процедура ERR_PKG.log была создана без директивы PRAGMA AUTONOMOUNS.
Я думаю, что есть следующие проблемы с приведенным выше кодом:
- SQL% ROWCOUNT никогда не будет выполнен, потому что выполнение перейдет непосредственно в ИСКЛЮЧИТЕЛЬНЫЙ РАЗДЕЛ (которого там нет)
- Процедура обработки ошибок ERR_PKG.LOG никогда не будет вызвана, потому что выполнениеперейдет в (несуществующий) раздел ИСКЛЮЧЕНИЯ
- Даже если выше два исправлены - ошибка никогда не будет регистрироваться, потому что процедура ERR_PKG.log была создана без PRAGMA AUTONOMOUS TRANSACTION и откат вызывающей транзакции вызоветошибка не регистрируется.
Я прав в приведенных выше замечаниях?