我最近在使用 pgAdmin III 很长时间后安装了 pgAdmin 4。我注意到在使用 RAISE NOTICE 运行 plpgsql 函数后,Messages 下没有显示任何内容。我去了https://www.postgresql.org/docs/current/static/plpgsql-errors-and-messages.html并尝试这样做:
set client_min_messages = 'NOTICE';
还尝试设置为各种级别的调试,但仍然没有出现。使用 pgAdmin III 连接时会出现通知,所以我认为两者之间存在一些我没有看到的差异。
如果有人问,我只是尝试了 Postgres 中的一个示例函数来测试它:
CREATE FUNCTION somefunc() RETURNS integer AS $$
<< outerblock >>
DECLARE
quantity integer := 30;
BEGIN
RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30
quantity := 50;
--
-- Create a subblock
--
DECLARE
quantity integer := 80;
BEGIN
RAISE NOTICE 'Quantity here is %', quantity; -- Prints 80
RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- Prints 50
END;
RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50
RETURN quantity;
END;
$$ LANGUAGE plpgsql;
在 pgAdmin III 中,提出了预期的通知:
注意:这里的数量是 30 上下文:PL/pgSQL 函数 somefunc() 第 6 行在 RAISE 注意:这里的数量是 80 上下文:PL/pgSQL 函数 somefunc() 第 14 行在 RAISE 注意:这里的外部数量是 50 上下文:PL/pgSQL function somefunc() line 15 at RAISE 注意:这里的数量是 50 上下文:PL/pgSQL function somefunc() line 18 at RAISE
总查询运行时间:14 毫秒。检索到 1 行。
提前感谢您的任何建议或答案!