Я использую pgAdmin и хочу получить простое уведомление о повышении; ссылаясь на это, я ввел RAISE NOTICE 'note';
и получил эту ошибку:
ERROR: syntax error at or near "RAISE"
LINE 1: RAISE NOTICE 'note';
Единственный способ, которым мне удалось получить результат, - это использовать это (что я тоже плохо понимаю):
DO $$
BEGIN
RAISE NOTICE 'note';
END;
$$ LANGUAGE plpgsql
И получил этот вывод:
NOTICE: note
DO
Может кто-нибудь объяснить это?
RAISE
— это команда PL/pgSQL , которую можно использовать только внутри PL/pgSQL. Команда DO создает анонимный блок PL/pgSQL (что-то вроде «временной процедуры»), и поэтому вы можете использовать RAISE внутри этого кода PL/pgSQL.
RAISE
нельзя использовать в обычном SQL, поэтому выдает ошибку
Зачем вообще нужен raise notice
? Какую реальную проблему вы пытаетесь решить с его помощью?
@Belayer У меня будет большой файл sql, и я хочу, чтобы сообщение печаталось после выполнения каждой команды.
Оберните RAISE
процедурой
create procedure raise_notice (s text) language plpgsql as
$$
begin
raise notice '%', s;
end;
$$;
и вызовите его в SQL
call raise_notice('note');
Для версии PG до 11 создайте функцию, которая returns void
с тем же телом и select
из него в SQL
select raise_notice('note');
Затем я должен обернуть уведомление о повышении в функцию, верно?