对于每个模式,我都有多个函数,以这种方式在创建时定义search_path
:
CREATE OR REPLACE FUNCTION the_schema.update_complete_url(updateLang bigint) RETURNS boolean AS $$
DECLARE
tree_row record;
BEGIN
// body of function
END
$$ LANGUAGE plpgsql SET search_path=the_schema,public,pg_temp;
search_path
已定义,因此我不需要在函数体中使用the_schema.
为每个表添加前缀,这样我就可以更轻松地维护这些函数。
现在我有一个维护/迁移脚本,用于测试某些功能是否退出并具有正确的设置。检索函数本身不是问题,因为它看起来像这样:
SELECT * FROM "information_schema"."routines"
WHERE "routine_type"='FUNCTION' AND "specific_schema"='the_schema';
使用"information_schema"."parameters"
查询参数也没问题,但SET search_path=the_schema,public,pg_temp
部分存储在哪里?
答案 0 :(得分:2)
AFAIK在info_schema中不可用。
你可以通过pg_catalog获得它,但它具体是PostgreSQL:
select unnest(proconfig) from pg_proc where proname = 'function_name';