Postgres有专门的功能。 Postgres引入8.4。 The manual:
pg_get_function_identity_arguments(func_oid)
...得到的参数列表识别功能(无默认值)...
pg_get_function_identity_arguments
返回参数列表 必要识别功能,在形式,它需要例如,在ALTER FUNCTION
内出现 。该表格省略了默认值。
使用(和format()
,在Postgres 9.1引入的),下面的查询生成DDL语句砸功能符合搜索条件:
SELECT format('DROP %s %I.%I(%s)'
, CASE WHEN p.proisagg THEN 'AGGREGATE' ELSE 'FUNCTION' END
, n.nspname
, p.proname
, pg_catalog.pg_get_function_identity_arguments(p.oid)
) AS stmt
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE p.proname = 'dblink' -- function name
-- AND n.nspname = 'public' -- schema name (optional)
-- AND pg_catalog.pg_function_is_visible(p.oid) -- function visible to user
ORDER BY 1;
返回:
stmt
---------------------------------------------------
DROP FUNCTION public.dblink(text);
DROP FUNCTION public.dblink(text, boolean);
DROP FUNCTION public.dblink(text, text);
DROP FUNCTION public.dblink(text, text, boolean);
发现了四个在该示例中匹配,因为dblink使用overloaded functions。
运行DROP
选择性地陈述!
或者,您可以使用便捷的投给它返回一个完整的函数签名,包括参数类型object identifier type regprocedure
:
-- SET LOCAL search_path = ''; -- optional, to get all names schema-qualified
SELECT format('DROP %s %s;'
, CASE WHEN proisagg THEN 'AGGREGATE' ELSE 'FUNCTION' END
, oid::regprocedure
) AS stmt
FROM pg_catalog.pg_proc
WHERE proname = 'dblink' -- function name
ORDER BY 1;
通过pgAdmin查看函数。 – 2012-08-26 02:55:13
['psql'](http://www.postgresql。组织/文档/电流/静态/ APP-psql.html)。 –