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

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


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

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


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