PostgreSQL

PostgreSQL ファンクション一覧(プロシージャ一覧)

PostgreSQL ストアド一覧

システムカタログの一つであるpg_catalog.pg_procテーブルを参照すればファンクション(プロシージャ含む)一覧を取得できますがポイントは以下のシステムカタログ情報関数を使って引数情報と、return情報を求めている点です。オーバーロードされたプログラムでは必要になってくる情報です。

  • pg_get_function_arguments(p.oid)   ストアドファンクション/プロシージャの引数情報を取得
  • pg_get_function_result(p.oid)  ストアドファンクションのreturn情報を取得
確認例
select
n.nspname as schema,
case p.prokind
when 'a' then 'agg'     -- 集合関数
when 'w' then 'window'  -- window関数
when 'p' then 'proc'    -- プロシージャ
when 'f' then 'func'    -- 通常関数
else '??'
end as type,
p.proname as program_name,
u.usename as prog_owner,
pg_catalog.pg_get_function_arguments(p.oid) as argument_data_types,
pg_catalog.pg_get_function_result(p.oid) as result_data_type
from  pg_catalog.pg_proc p
left outer join  pg_catalog.pg_namespace n
on n.oid = p.pronamespace
left outer join pg_user u
on p.proowner = u.usesysid
where n.nspname in ('udonman','sooni')
order by 1,2,3, 4
;
確認例
myposdb=# \g
 schema  | type |    program_name    | prog_owner |         argument_data_types         |                    result_data_type
---------+------+--------------------+------------+-------------------------------------+---------------------------------------------------------
 sooni   | func | destination        | sooni      |                                     | TABLE(item_no integer, item_name text, item_value text)
 sooni   | func | destination        | sooni      | p_item_no integer                   | TABLE(item_no integer, item_name text, item_value text)
 sooni   | func | file_fdw_handler   | sooni      |                                     | fdw_handler
 sooni   | func | file_fdw_validator | sooni      | text[], oid                         | void
 sooni   | func | fnc_wardcity       | sooni      | p_prefectures character varying     | character varying[]
 sooni   | func | tabledef           | sooni      | oid                                 | text
 sooni   | proc | insert_kudamono    | sooni      | integer, character varying, integer |
 udonman | func | tabledef           | sooni      | oid                                 | text
(8 行)


myposdb=#

SQLでテーブル一覧出力

スポンサーリンク
コピペで使う