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=#