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
FROM
information_schema.routines AS r
,pg_proc AS p
WHERE
r.specific_schema = current_schema()
AND r.routine_type='PROCEDURE'
AND r.routine_name = p.proname
GROUP BY
r.routine_name
,p.oid
ORDER BY
r.routine_name
,(SELECT pg_get_function_identity_arguments( p.oid ))
実行すると接続しているスキマー内の登録されているストアドプロシジャの一覧が取得できます。
ここで注意が必要なのは
PostgreSQL のストアドプロシジャーはオーバーロードが可能
です。
つまり同じ名前で引数の組み合わせが異なるストアドプロシジャーを作ることができます。
それに対応するためにあえて SELECT pg_get_function_identity_arguments( p.oid ) と oid を使って引数を取って区別できるようにしてあります。
