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 を使って引数を取って区別できるようにしてあります。