Процедура обработки ошибок без PRAGMA AUTONOMOUS - PullRequest
0 голосов
/ 07 июня 2019

У меня есть следующая процедура:

 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.

Я думаю, что есть следующие проблемы с приведенным выше кодом:

  1. SQL% ROWCOUNT никогда не будет выполнен, потому что выполнение перейдет непосредственно в ИСКЛЮЧИТЕЛЬНЫЙ РАЗДЕЛ (которого там нет)
  2. Процедура обработки ошибок ERR_PKG.LOG никогда не будет вызвана, потому что выполнениеперейдет в (несуществующий) раздел ИСКЛЮЧЕНИЯ
  3. Даже если выше два исправлены - ошибка никогда не будет регистрироваться, потому что процедура ERR_PKG.log была создана без PRAGMA AUTONOMOUS TRANSACTION и откат вызывающей транзакции вызоветошибка не регистрируется.

Я прав в приведенных выше замечаниях?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...