Подтвердить что ты не робот

Печать сообщений времени выполнения в 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 предлагает лучший способ сделать это, спасибо

4b9b3361

Ответ 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';