Postgresql

如何在嵌套和子函式中使用 raise 通知?

  • January 2, 2022

我正在使用 PgAdmin 創建多個 pgsql 函式。我是這個環境的初學者。我正在使用“提高通知”來幫助我進行調試階段。

我有兩個帶有“提高通知”聲明的功能。第一個函式呼叫第二個函式。

我可以顯示第一個函式的“提高通知”語句。我無法顯示第二個函式的“提高通知”語句。在適當的位置,控制台會為每個應該顯示的“提高通知”顯示空白行。

功能 1 - 範例:

raise notice 'Function 1 executing';    -- This raise notice works
PERFORM public.function_2();

功能 2 - 範例:

raise notice 'Function 2 is now running';   -- This raise notice doesn't work

有可能做我想做的事嗎?

是的,有可能。我已經使用 PG 12.2 和 psql CLI 測試了以下內容:

show client_min_messages;
client_min_messages 
---------------------
notice
(1 row) 
create or replace function f2 () returns text
as
$$
declare
begin
raise notice 'Function 2 is now running';
return 'f2: OK';
end;
$$
language plpgsql;
CREATE FUNCTION
create or replace function f1 () returns text
as
$$
declare
begin
raise notice 'Function 1 executing';
perform f2();
return 'f1: OK';
end;
$$
language plpgsql;
CREATE FUNCTION
select f1();
psql:t2f.sql:27: NOTICE:  Function 1 executing
psql:t2f.sql:27: NOTICE:  Function 2 is now running
  f1   
--------
f1: OK
(1 row)

謝謝你的回复,

我從不需要更改 PostGre 伺服器或 PgAdmin 的任何參數。所以,我不太了解他們。我不確定我的 PgAdmin 版本,“關於”表單說 1.20(?!)

我的 client_min_messages 和你一樣,我的程式碼沒有修改它。

消息面板中的結果與您略有不同,如下所示:

注意:功能 1 正在執行

$$ Blank line $$ 請求執行的總持續時間:23 毫秒。恢復了 1 條線路。

$$ Blank line $$我多次呼叫函式 2。

引用自:https://dba.stackexchange.com/questions/262589