我正在尝试测试我将使用的 plpgsql 函数。它类似于此处底部的功能。我不是一个有经验的 plpgsql 人。最终,我将使用 JPA 和相关 API 复制 java 中的功能(但这在这里并不是特别相关)。
无论如何,我正在使用 pgAdmin 进行所有初步开发和测试。在我的数据库中,使用 pgAdmin 查询工具。从查询工具中,我粘贴了以下内容(底部的功能代码,仅具有完整功能),然后执行。结果是成功执行了
然后我想测试它,但在功能列表中没有看到它。为此,我跑了:
SELECT
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
AND
routine_schema = 'common';
但是,它没有列在功能中。我还尝试了模式“公共”(不知道默认情况下它会去哪里)。然后我简单地尝试通过执行以下操作从查询工具执行函数:
execute my_function('test-blah','foo', 'bar');
,但它返回错误说函数不存在。
所以我的问题是为什么我看不到我的函数,我该怎么做才能让它在我的架构中持久存在以便我可以使用它?感谢您的回答。
drop function if exists my_function;
create or replace function my_function(
v_table_name varchar,
v_old_value varchar,
v_new_value varchar
)
returns void
language 'plpgsql'
called on null input
cost 100
as $body$
declare
v_rec record;
v_sql varchar;
v_cnt integer;
begin
-- a bunch more lines
end;
$body$;
使用上述查询创建的函数应列在执行查询的同一服务器的函数节点下的公共模式中。 您能否确认您正在检查创建该功能的树浏览器中的同一服务器。