Postgresql
如何在嵌套和子函式中使用 raise 通知?
我正在使用 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。