如何在 PostgreSQL 中列出用户定义的函数和过程
How to list out the user defined functions and procedures in PostgreSQL
试图找出 PostgreSQL 上的存储函数和过程。我发现了一些使用 "join" 的解决方案。我正在寻找一个最佳的solution/command。
如果有命令我真的不知道。
例如,我还使用 pg_catalog.pg_proc 和 pg_catalog.pg_namespace 之间的连接解决方案来列出一个模式中的所有函数。
你可以玩join来获得你需要的东西。
例如,此查询将为您提供更改架构上所有函数所有者的命令:
SELECT 'ALTER FUNCTION '
|| quote_ident(n.nspname) || '.'
|| quote_ident(p.proname) || '('
|| pg_catalog.pg_get_function_identity_arguments(p.oid)
|| ') OWNER TO owner_usr;' AS command
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname = 'your_schema';
这个应该列出您所有的用户定义函数:
SELECT quote_ident(n.nspname) as schema , quote_ident(p.proname) as function
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname not like 'pg%'
希望对您有所帮助。
您可以使用元命令获取函数
\df
试图找出 PostgreSQL 上的存储函数和过程。我发现了一些使用 "join" 的解决方案。我正在寻找一个最佳的solution/command。
如果有命令我真的不知道。 例如,我还使用 pg_catalog.pg_proc 和 pg_catalog.pg_namespace 之间的连接解决方案来列出一个模式中的所有函数。
你可以玩join来获得你需要的东西。 例如,此查询将为您提供更改架构上所有函数所有者的命令:
SELECT 'ALTER FUNCTION '
|| quote_ident(n.nspname) || '.'
|| quote_ident(p.proname) || '('
|| pg_catalog.pg_get_function_identity_arguments(p.oid)
|| ') OWNER TO owner_usr;' AS command
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname = 'your_schema';
这个应该列出您所有的用户定义函数:
SELECT quote_ident(n.nspname) as schema , quote_ident(p.proname) as function
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname not like 'pg%'
希望对您有所帮助。
您可以使用元命令获取函数
\df