Как сделать подобие console.log() как в JavaScript?
В функциях PostgreSQL иногда полезно выводить промежуточные результаты в консоль, чтобы понимать как работает алгоритм функции.
Нужный нам оператор (команда) называется:
RAISE NOTICE
Команда RAISE предназначена для вывода сообщений и вызова ошибок. Она может быть написана в коротком виде.
Но в нашей задаче нужно дополнительно указывать УРОВЕНЬ.
УРОВЕНЬ задаёт уровень важности ошибки. Возможные значения: DEBUG, LOG, INFO, NOTICE, WARNING и EXCEPTION. По умолчанию используется EXCEPTION.
Давайте напишем самую простую функцию:
— Использование RAISE NOTICE
— в теле функции
CREATE OR REPLACE FUNCTION rn()
RETURNS void
LANGUAGE ‘plpgsql’
AS
$$
DECLARE
myvar bigint := 0;
BEGIN
RAISE NOTICE ‘myvar = %’, myvar;
END;
$$;
— Вызов функции
SELECT rn();
— Удаление функции
DROP FUNCTION rn();
Как работает функция?
Наша простейшая функция написана на языке plpgsql.
Она ничего не принимает. Входных параметров нет.
Она ничего не возвращает. Ключевое слово RETURNS использует для этого значение void.
Теперь давайте вызовем нашу функцию и посмотрим на консольные сообщения.
Делать вызов мы будем в веб-интерфейсе pgAdmin 4.

На вкладке «Messages» можно рассмотреть пункт «ЗАМЕЧАНИЕ:«. Справа от этой записи мы увидим нашу строку, где вместо знака процента будет стоять наше число ноль. Мы вывели именно то, что хотели узнать в процессе работы функции.
Чуть ниже мы также видим информационное сообщение, которое говорит нам о том, что вызов выполнился УСПЕШНО.
Дополнение
Давайте добавим в нашу функцию немножко логики и каждый этап буем выводить в консоль.
CREATE OR REPLACE FUNCTION rn2()
RETURNS void
LANGUAGE ‘plpgsql’
AS
$$
DECLARE
myvar bigint := 0;
BEGIN
myvar := myvar + 1; RAISE NOTICE ‘%’, myvar;
myvar := myvar + 2; RAISE NOTICE ‘%’, myvar;
myvar := myvar + 3; RAISE NOTICE ‘%’, myvar;
myvar := myvar + 4; RAISE NOTICE ‘%’, myvar;
END;
$$;
Результат работы функции:

В выходных данных мы ничего не получаем так как фактически функция ничего не возвращает из-за void. Нам так нужно. Иначе если не использовать void, то нужно что-то возвращать да ещё с каким-то конкретным типом данных.
А вот вкладка «Messages» становится более насыщенной.

В этот раз мы видим уже 4 замечания и 4 значения. Каждая операция корректно складывает числа и увеличивает значение переменной myvar на
Информационные ссылки
Официальный сайт WEB-оболочки pgAdmin — https://www.pgadmin.org
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Раздел «43.9. Сообщения и ошибки» — https://postgrespro.ru/docs/postgresql/14/plpgsql-errors-and-messages