有没有办法获取任何PostgreSQL命令的输入参数列表及其类型和输出参数及其类型?我主要对select语句和存储过程调用感兴趣。我不想执行命令来获取信息。我对可以使用的任何可自动化的解决方案持开放态度。理想情况下,它可能是我可以调用的存储过程或我可以包装的本机库。我希望每个参数都有datatype info。
使用Microsoft SQL Server,可以sys.sp_describe_first_result_set
中的svn ci `svn st | grep -e "^[A|M]" | grep -v "test.js" | grep -ve "conf\.js$" | awk '{print $2}' | tr "\\n" " "`
中的span
获取此信息。
答案 0 :(得分:2)
PostgreSQL没有程序(不是T-SQL意义上的) - 并且函数结果类型是静态声明的 - 只需要查看表pg_proc
。以下查询显示nanvl
函数的信息。
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
WHEN p.proisagg THEN 'agg'
WHEN p.proiswindow THEN 'window'
WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN 'trigger'
ELSE 'normal'
END as "Type"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE p.proname ~ '^(nanvl)$'
AND pg_catalog.pg_function_is_visible(p.oid)
ORDER BY 1, 2, 4;
List of functions ┌────────┬───────┬──────────────────┬─────────────────────────────────────┬────────┐ │ Schema │ Name │ Result data type │ Argument data types │ Type │ ╞════════╪═══════╪══════════════════╪═════════════════════════════════════╪════════╡ │ public │ nanvl │ double precision │ double precision, character varying │ normal │ │ public │ nanvl │ double precision │ double precision, double precision │ normal │ │ public │ nanvl │ numeric │ numeric, character varying │ normal │ │ public │ nanvl │ numeric │ numeric, numeric │ normal │ │ public │ nanvl │ real │ real, character varying │ normal │ │ public │ nanvl │ real │ real, real │ normal │ └────────┴───────┴──────────────────┴─────────────────────────────────────┴────────┘ (6 rows)
获取查询结果有点困难(但它完全通用) - 您必须创建预准备语句或游标,然后您可以使用API函数PQdescribePrepared
或PQdescribePortal`返回类型信息。