web-dev-qa-db-ja.com

PostgreSQLでユーザー定義の関数とプロシージャを一覧表示する方法

PostgreSQLに保存されている関数とプロシージャを見つけようとしています。 「結合」が使用されているソリューションのいくつかを見つけました。私はそれに最適な解決策/コマンドを探しています。

12
Bisu

コマンドがある場合、私は本当に知りません。また、たとえばpg_catalog.pg_procとpg_catalog.pg_namespaceの間の結合ソリューションを使用して、1つのスキーマ内のすべての関数を一覧表示します。

参加して、必要なものを手に入れることができます。たとえば、このクエリは、スキーマ上のすべての関数の所有者を変更するコマンドを提供します。

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%'

お役に立てば幸いです。

14
lsilva

メタコマンドを使用して関数を取得できます

\df
2
user48623