2012-03-21 6 views
1

Я поддерживаю некоторые формы форм оракула, и я получаю числовую или значение ошибки. Однако процесс очень длинный, и он перемещается по многим пакетам в форме. То, что я мог сделать, просто передал сообщения по этому процессу (видимо, конечно, только для меня), чтобы увидеть, где именно это происходит, но это было бы очень долго. Поэтому мне было интересно, есть ли что-нибудь, что я мог бы использовать, например, DBMS_UTILITY.format_error_backtrace, но на стороне клиента, и получить имя пакета, в котором была сгенерирована ошибка. Я в настоящее время использую:Как получить имя пакета, где возникла ошибка в Oracle Forms 6i

exception when others then functionThatPrintsMe(sqlerrm);

Но это не дает мне достаточно информации.

+0

Что делает 'functionThatPrintsMe'? Не могли бы вы просто повторно создать исключение, если вы не можете устранить исключение, чтобы получить полную трассировку стека? Или даже удалите обработчик исключений, если он не делает ничего, чтобы разрешить исключение. –

+0

@JustinCave Привет, он просто помещает сообщение в поле контейнера формы (главное окно приложения) и устанавливает это поле видимым. – Roger

ответ

1

DBMS_ERROR_TEXT возвращает всю последовательность рекурсивных ошибок

так что вы должны получить всю необходимую информацию из этого

Пожалуйста, используйте

exception when others then functionThatPrintsMe(DBMS_ERROR_TEXT); 

для получения дополнительной информации о оракула 6i формы вы можете обратиться

http://www.oracle.com/technetwork/documentation/6i-forms-084462.html

+0

Это не дает мне название программного модуля, где срабатывает ошибка; В настоящее время мы используем тот, который вы говорите: S – Roger

+0

Знаете ли вы блок, из которого вызывается первый пакет или PLL? – psaraj12

+0

Да, я знаю начальный звонок; он запускается кнопкой управления. И перемещает (около) 10 пакетов, которые могут иметь много функций и процедур. – Roger