Есть ли аналог RAISE NOTICE в Oracle?
В PostgreSQL есть команда RAISE NOTICE, которая выводит сообщения.
Например, здесь выведется сообщение, и % будет заменён на значение v_job_id:
RAISE NOTICE 'Вызов функции cs_create_job(%)', v_job_id;
Мне интересно, есть ли что-то похожее в Oracle.
Ответы (1 шт):
Наиболе близкий аналог RAISE NOTICE в Oracle это:
- DBMS_OUTPUT.PUT_LINE для вывода сообщения клиенту
- UTL_LMS.FORMAT_MESSAGE для форматирования сообщения
Воспроизводимый пример:
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имеет некоторые ограничения на типы данных принимаемые в аргументах. Кто столнётся, тому поможет этот топик.