Отправить сообщение об ошибке через фоновое задание в oracle pl / sql

#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;