Есть ли аналог RAISE NOTICE в Oracle?

В PostgreSQL есть команда RAISE NOTICE, которая выводит сообщения.

Например, здесь выведется сообщение, и % будет заменён на значение v_job_id:

RAISE NOTICE 'Вызов функции cs_create_job(%)', v_job_id;

Мне интересно, есть ли что-то похожее в Oracle.


Ответы (1 шт):

Автор решения: 0xdb

Наиболе близкий аналог RAISE NOTICE в Oracle это:

Воспроизводимый пример:

set serveroutput on

declare 
    func_name varchar2 (32) := 'cs_create_job';
    job_id pls_integer := 42;
begin
    dbms_output.put_line (
        utl_lms.format_message ('Вызов функции %s(%d)', func_name, job_id));
end;
/

Вызов функции cs_create_job(42)

Следует учесть, что:

  • DBMS_OUTPUT записывает все сообшения во внутренний буфер и он никуда не выводится. Это задача клиентского приложения - получить сообщения из буфера и вывести их. Во многих инструментах для получения и вывода буфера есть переменная serveroutput.

  • В отличае от RAISE NOTICE, в Oracle нет возможности записать сообщение в лог сервера.

  • UTL_LMS.FORMAT_MESSAGE имеет некоторые ограничения на типы данных принимаемые в аргументах. Кто столнётся, тому поможет этот топик.

→ Ссылка