#oracle #plsql
#Oracle #plsql
Вопрос:
Мне нужно отправить ошибку из скрипта pl / sql, который я могу регистрировать и отслеживать.
Я пытаюсь создать процедуру, которая ничего не делает, кроме сбоя, и отображает настраиваемый набор ошибок.
PROCEDURE Custom_Error ()
BEGIN
raise_application_error(-20101, 'Custom Error!');
END Custom_Error;
Мне не разрешено. Я получаю эту ошибку:
Compilation errors for PACKAGE ...
Error: PLS-00103: Encountered the symbol ")" when expecting one of the following:
Мой план состоял в том, чтобы вызвать эту процедуру в фоновом режиме, а затем получить ошибку «Пользовательская ошибка» в моем журнале фоновых заданий с ошибкой.
Это правильный способ сделать это?
BR
Комментарии:
1. вам не нужно ничего
()
после имени процесса. но почему бы просто не позвонитьraise_application_error
туда, куда вы хотите позвонитьCustom_Error
?2. попробуйте удалить
()
после имени процедуры. Они не нужны, если ваша процедура (или функция) не имеет параметров.3. Если я выполняю: ПРОЦЕДУРА Custom_Error ЗАПУСКАЕТ raise_application_error(-20101, ‘Пользовательская ошибка!’); ЗАВЕРШАЕТ Custom_Error; Я получаю эту ошибку: Ошибки компиляции для ТЕЛА ПАКЕТА KC_PROD.KOSAN_KC_API Ошибка: PLS-00103: обнаружен символ «BEGIN» при ожидании одного из следующих действий: ( ; Символ «;»было заменено на «НАЧАТЬ», чтобы продолжить.
4. Беглый взгляд на документацию PL / SQL подтверждает, что заголовки процедур create отделены от остальной части кода с помощью AS или IS .
Ответ №1:
Правильный синтаксис для процедуры без параметров в PL / SQL
create or replace PROCEDURE Custom_Error is
BEGIN
raise_application_error(-20101, 'Custom Error!');
END Custom_Error;