Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / рекурсивный вызов / 7 сообщений из 7, страница 1 из 1
08.01.2019, 13:58
    #39756736
xxnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
Добрый день,
Подскажите пожалуйста, есть пакет в процедурах которого в секции exception есть вызов другого пакета который логирует ошибки.
Есть необходимость при определённой ошибке перезапускать процедуру . Соответственно вопрос, можно ли в момент вызова этой логирующей процедуры узнать набор параметров с фактическими значениями процедуры, которая её же вызвала.

Т.е. есть чтобы работал перезапуск. Есть например package_parent.proc1(par1=>...., par2=>...) . В случае падения внутри этой процедуры вызывается пакет pkg_error_log.save_error, который в случае нужной ошибки рекурсивно запускает опять же package_parent.proc1(par1=>...., par2=>...)


Есть ли какие известные проблемы, или с чем неприятным можно столкнуться при рекурсивном вызове процедур в Оракле ?
...
Рейтинг: 0 / 0
08.01.2019, 14:25
    #39756748
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
Если хочется перезапустить процедуру, то это должна делать сама процедура и с защитой от вечной рекурсии.
...
Рейтинг: 0 / 0
08.01.2019, 15:27
    #39756773
xxnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
ну должна по правильному конечно, но тут ситуация что есть огромное кол-во пакетов с однообразной структурой и надо отловить единственный код ошибки (при получении данных с удалённой базы по dblink ) и перезапустить пакеты.
Поэтому логично добавить (если это возможно) перезапуск именно в процедуру логирования ошибок, потому как она есть во всех этих пакетах.
Защиту от вечной рекурсии не проблема прикрутить основываясь на логах запуска. Имя пакета и процедуры тоже. Остаются параметры при вызове.
...
Рейтинг: 0 / 0
08.01.2019, 15:57
    #39756781
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
xxnnПоэтому логично добавить (если это возможно) перезапуск именно в процедуру логирования ошибок, потому как она есть во всех этих пакетах.Нет.
...
Рейтинг: 0 / 0
08.01.2019, 17:35
    #39756820
xxnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
ладно, нет - так нет, Elic ну серьёзно, вопрос же о другом, не об архитектурном решении, почему всегда так все поучать любят. Неужели у всех всё так идеально в плане архитектуры что прямо глаза режут посты где что-то не вписывается в эту гармонию.

Переформулирую вопрос - есть ли возможность узнать с какими параметрами запускалась процедура в текущей сессии, то есть некий стек вызовов процедур наподобие DBMS_UTILITY.FORMAT_CALL_STACK но с параметрами или v_ки где есть эта информация?
...
Рейтинг: 0 / 0
08.01.2019, 17:57
    #39756826
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
xxnnесть ли возможность узнать с какими параметрами запускалась процедура в текущей сессииК счастью, нет.
...
Рейтинг: 0 / 0
08.01.2019, 19:28
    #39756842
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
рекурсивный вызов
вопрос:
xxnn есть ли возможность узнать с какими параметрами запускалась процедура в текущей сессии?
ответ:
xxnnосновываясь на логах запуска
пиши (внутри самой процедуры) все входные параметры в лог запуска, дополнительно указав идентификатор сессии и прочие нужные подробности из переменных окружения .
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / рекурсивный вызов / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]