1. ホーム
  2. postgresql

[解決済み] PostgreSQLの特定のスキーマのデータベースに格納されているすべての関数のリストを取得するにはどうすればよいですか?

2022-04-22 20:53:47

質問

PostgreSQLデータベースに接続し、特定のスキーマのすべての関数を検索できるようにしたいのですが、どうすればよいですか?

pg_catalog や information_schema に何らかのクエリを作成して、すべての関数のリストを取得できると思ったのですが、名前とパラメータがどこに格納されているのかが分かりません。関数名と受け取るパラメータの種類(とその順番)を教えてくれるようなクエリを探しています。

このような方法はあるのでしょうか?

どのように解決するのですか?

いろいろと検索したところ information_schema.routines テーブルと information_schema.parameters テーブルを使用します。これらを使って、この目的のためのクエリを構築することができます。JOINの代わりにLEFT JOINが必要なのは、パラメータを持たない関数を取得するためです。

SELECT routines.routine_name, parameters.data_type, parameters.ordinal_position
FROM information_schema.routines
    LEFT JOIN information_schema.parameters ON routines.specific_name=parameters.specific_name
WHERE routines.specific_schema='my_specified_schema_name'
ORDER BY routines.routine_name, parameters.ordinal_position;