0

我想在 CSV 文件中列出 EDB Postgres 中的所有过程和函数及其输入和输出参数定义。查看 EDB 中的 pg_catalog.pg_proc 表,我看到有关 I/O 参数的信息主要分布在两列中:

proargtypes --> 包含数据类型的 OID

proargnames --> 参数名称

这两列都是包含数据类型 OID 和名称的 LOV。

是否可以将参数列为组合字符串(IN Name varchar,IN startdate date,OUT sal int)?

'prosrc' 列有函数列表,但没有关于参数的内容。

想要在 SQL 中完成此操作,例如 SELECT prosrc、arguments_list.. from pg_catalog.pg_proc。

也查看了 information_schema.routines 视图,但没有任何内容。

想要在 SQL 中完成此操作,例如 SELECT prosrc、arguments_list.. from pg_catalog.pg_proc。

4

1 回答 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_sources或表。dba_source

于 2020-04-14T18:12:34.360 回答