WITH funcs AS (
SELECT
n.nspname AS schema
,proname AS sproc_name
,proargnames AS arg_names
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
FROM pg_proc p
JOIN pg_type t on p.prorettype = t.oid
JOIN pg_description d on p.oid = d.objoid
JOIN pg_namespace n on n.oid = p.pronamespace
WHERE n.nspname = 'some_schema_name_here'
)
SELECT *
FROM funcs
;;
4条答案
按热度按时间mutmk8jj1#
要获取函数的定义,请使用
pg_get_functiondef()
:索引、视图、规则等的定义也有类似的取数功能,具体参见手册:http://www.postgresql.org/docs/current/static/functions-info.html
获取用户类型的定义有点棘手,需要查询
information_schema.attributes
:然后,您需要重新组装
create type
语句。有关详细信息,您需要通读系统目录的文档:http://www.postgresql.org/docs/current/static/catalogs.html
但是如果
information_schema
视图返回相同的信息,您应该更喜欢它们。eyh26e7m2#
您将发现
psql -E
在您寻求这些查询时非常有用。它显示了
psql
在执行其反斜杠命令时使用的查询,如\df+ myfunc
,以了解有关此函数的详细信息。rmbxnbpk3#
下面是使用pg_get_functiondef的完整示例查询:
注意,您显然应该指定模式名称(如果您使用的是该模式,则指定“public”)
pkwftd7m4#
您还可以执行\sf以查看psql中的用户定义函数