Печать сообщений времени выполнения в postgres
Можно ли использовать RAISE NOTICE
в postgres как эквивалент сообщения RAISERROR
'для отображения' WITH NOWAIT
в SQL Server или есть лучший способ печати промежуточных сообщений при запуске запросов postgres? Пожалуйста, предложите, будет ли лучший способ печатать сообщения времени выполнения в postgres.
INSERT INTO tbl1 (col1) values (val1);
DO $$
begin
raise notice 'insert tbl1 done!';
end;
$$;
UPDATE tbl2 set col2='val2' where ...;
DO $$
begin
raise notice 'update tbl2 done!';
end;
$$;
Извиняюсь, если этот код слишком плохо комментирует, PLS предлагает лучший способ сделать это, спасибо
Ответы
Ответ 1
Да, вы можете использовать RAISE NOTICE
, как показано ниже. Он исправляет то, как вы это делаете.
RAISE NOTICE 'i want to print % and %', var1,var2;
Подробнее см. здесь https://www.postgresql.org/docs/current/static/plpgsql-errors-and-messages.html
EDIT:
begin
INSERT INTO tbl1 (col1) values (val1);
raise notice 'insert tbl1 done!';
end;
Ответ 2
ПОДТВЕРЖДЕНИЕ RAISE является частью PL/pgSQL, поэтому оно является законным только в функции или анонимном блоке DO. Я думаю, вы могли бы сделать функцию, которая поднимает уведомление и вызывает это.
Ответ 3
Вы можете использовать очень простое утверждение в функции везде.
DO $$ begin raise notice '%',now(); end; $$;
функция для справки:
create or replace function test() RETURNS bool AS '
begin
raise notice ''%'',now();
for i IN 0..50000000 loop
end loop
raise notice ''%'',now();
return true;
end;
ЯЗЫК 'plpgsql';