我们可以在postgres中使用RAISE NOTICE
作为等同于RAISERROR
'消息来显示'在SQL Server中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;
$$;
如果这段代码太难评论我很抱歉,请提出更好的方法,谢谢
答案 0 :(得分:15)
是的,您可以使用下面的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;
答案 1 :(得分:1)
您也可以在没有0
块的情况下进行常规选择。
DO
权衡是它确实增加了输出的混乱度,例如
INSERT INTO tbl1 (col1) values (val1);
SELECT 'insert tbl1 done!' as msg;
UPDATE tbl2 set col2='val2' where ...;
SELECT 'update tbl2 done!' as msg;
答案 2 :(得分:0)
RAISE NOTICE是PL / pgSQL的一部分,因此它只在函数或匿名DO块中合法。我想你可以创建一个提醒通知并调用它的函数。
答案 3 :(得分:0)
您可以在函数中使用非常简单的语句。
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;
LANGUAGE'plpgsql';