有一种方法可以使用针对目录的SQL在EDB Postgres中列出带有参数定义的存储过程和函数源

问题描述 投票:0回答:1

我想在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。

parameters procedure definition enterprisedb
1个回答
0
投票

以下是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_sourcesdba_source表。

© www.soinside.com 2019 - 2024. All rights reserved.