gpt4 book ai didi

postgresql - 有没有办法列出所有用户定义的 PostgreSQL 函数?

转载 作者:行者123 更新时间:2023-11-29 11:39:27 26 4
gpt4 key购买 nike

PostgreSQL 提供命令\dv 来列出所有 View 。是否有类似的方法来列出所有用户定义的函数,或者可能只是列出特定用户定义的那些函数?\sf 要求您知道函数的名称,它将提供函数的定义。\df 列出所有函数(而且有很多)。我想要一种方法来显示我定义的函数列表。

最佳答案

查找此类查询的最佳方法是使用带有--echo-hidden 选项的psql。然后运行 ​​psql 元命令,您将看到使用的查询。

\df 是:

SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types",
CASE
WHEN p.proisagg THEN 'agg'
WHEN p.proiswindow THEN 'window'
WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN 'trigger'
ELSE 'normal'
END as "Type"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
ORDER BY 1, 2, 4;

您可以通过例如将 where 子句更改为:

AND n.nspname = 'public'

相当于 \df public.*


如果你勾选the documentation of pg_proc您会注意到有一个 proowner 列,因此您还可以运行:

SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types"
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_roles u ON u.oid = p.proowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname = 'public'
AND u.rolname = current_user --<< this limits the functions to those that the current user owns.

关于postgresql - 有没有办法列出所有用户定义的 PostgreSQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com