在postgres中打印运行时消息

RAF*_*FIQ 11 sql sql-server postgresql

我们可以RAISE NOTICE在postgres中使用等同于SQL Server中的RAISERROR"显示消息" WITH NOWAIT,还是有更好的方法在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;
$$;
Run Code Online (Sandbox Code Playgroud)

我很抱歉,如果这段代码太难以评论,请建议一个更好的方法来做,谢谢

Rah*_*hul 18

是的,你可以使用RAISE NOTICE如下.你正在做的事情是正确的.

RAISE NOTICE 'i want to print % and %', var1,var2;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见此处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;
Run Code Online (Sandbox Code Playgroud)

  • RAISE是PL / PgSQL语句,而不是SQL语句。因此,您不能仅在过程中在顶级SQL中使用它。您总是可以创建一个简单的过程,不过您可以将其称为`raise_notice('message')`。 (2认同)
  • 函数运行后在哪里可以看到这些消息? (2认同)

Gau*_*iya 12

您可以在任何地方的函数中使用非常简单的语句。

DO $$ begin raise notice '%',now(); end; $$;
Run Code Online (Sandbox Code Playgroud)

函数参考:

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;
Run Code Online (Sandbox Code Playgroud)

语言 'plpgsql';