我想查找PostgreSQL上存储的函数和过程。 我发现了一些使用“join”的解决方案。 我正在寻找一种最佳的解决方案 / 命令。
我想查找PostgreSQL上存储的函数和过程。 我发现了一些使用“join”的解决方案。 我正在寻找一种最佳的解决方案 / 命令。
如果有个我不知道的命令,我也会使用pg_catalog.pg_proc和pg_catalog.pg_namespace之间的联接解决方案来列出一个模式中的所有函数。
你可以通过调整联接来获得所需内容。 例如,此查询将为您提供更改模式上所有函数所有者的命令:
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
WHERE n.nspname not like 'pg\_%'
(添加一个下划线)。虽然仍不完全安全,但已经更加安全了。 - Tim B.