我想在EDB Postgres中列出所有过程和函数,并在CSV文件中列出它们的输入和输出参数定义。查看EDB中的pg_catalog.pg_proc表,我发现有关I / O参数的信息主要分布在两列中:
proargtypes->包含数据类型的OID
proargnames->参数名称
这两列都是包含数据类型OID和名称的LOV。
是否可以将参数作为组合字符串列出(IN名称varchar,IN开始日期,OUT sal int)?
'prosrc'列具有功能列表,但与参数无关。
想要在SQL中完成此操作,例如SELECT prosrc,arguments_list ..来自pg_catalog.pg_proc。
也查看了information_schema.routines视图,但那里什么也没有。
想要在SQL中完成此操作,例如SELECT prosrc,arguments_list ..来自pg_catalog.pg_proc。
以下是SQL:
SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types",
CASE p.prokind
WHEN 'a' THEN 'agg'
WHEN 'w' THEN 'window'
WHEN 'p' THEN 'proc'
ELSE 'func'
END as "Type"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE p.protype in ('0', '1')
AND (pg_catalog.pg_function_is_visible(p.oid) OR pg_catalog.pg_procedure_is_visible(p.oid))
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
AND n.nspname <> 'sys'
ORDER BY 1, 2, 4, 5;
您也可以在EDB中浏览all_sources
或dba_source
表。