PostgreSQL で SQL を使って関数の一覧を取得するには information_schema.routines,pg_proc スキーマーを参照して取得します。
PostgreSQLで関数一覧取得
PostgreSQLでSQLを使って関数一覧を取得するには information_schema.routines,pg_procスキーマーを参照する方法が簡単です。
実行する SQL は以下の通りです。
SELECT
r.routine_name AS proname
,p.oid AS oid
,(SELECT pg_get_function_identity_arguments( p.oid )) AS param
,CASE WHEN r.data_type = 'trigger' THEN 'trigger' ELSE 'normal' END AS func_type
FROM information_schema.routines AS r
,pg_proc AS p
WHERE
r.specific_schema=current_schema() AND r.routine_type='FUNCTION'
AND r.routine_name = p.proname
GROUP BY
r.routine_name
,p.oid
,(SELECT pg_get_function_identity_arguments( p.oid ))
,CASE WHEN r.data_type = 'trigger' THEN 'trigger' ELSE 'normal' END
ORDER BY
r.routine_name
,(SELECT pg_get_function_identity_arguments( p.oid ))
実行すると接続しているスキマー内の登録されている関数の一覧が取得できます。
ここで注意が必要なのは
PostgreSQL の関数はオーバーロードが可能
です。
つまり同じ名前で引数の組み合わせが異なる関数を作ることができます。
それに対応するためにあえて SELECT pg_get_function_identity_arguments( p.oid ) と oid を使って引数を取って区別できるようにしてあります。
