web-dev-qa-db-ja.com

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はそれを行うためのより良い方法を提案しています、ありがとう

11
RAFIQ

はい、RAISE NOTICE以下のように。あなたのやり方は正しいです。

RAISE NOTICE 'i want to print % and %', var1,var2;

詳細については、こちらをご覧ください https://www.postgresql.org/docs/current/static/plpgsql-errors-and-messages.html

編集:

begin
INSERT INTO tbl1 (col1) values (val1);
raise notice 'insert tbl1 done!';
end;
20
Rahul

関数のどこでも非常に単純なステートメントを使用できます。

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';

1
Gaurav Koradiya

RAISE NOTICEはPL/pgSQLの一部であるため、関数または無名DOブロックでのみ有効です。通知を発生させる関数を作成し、それを呼び出すことができると思います。

0
Emery Lapinski