如何在postgresql中获取存储过程的参数列表
我想获取postgresql中存储过程的参数列表,是否有任何查询来获取这些参数 我有一个系统程序可以做同样的事情,那就是:如何在postgresql中获取存储过程的参数列表,sql,function,postgresql,stored-procedures,Sql,Function,Postgresql,Stored Procedures,我想获取postgresql中存储过程的参数列表,是否有任何查询来获取这些参数 我有一个系统程序可以做同样的事情,那就是: SELECT pg_get_function_identity_arguments('funcname'::regproc); 但在这里,当有多个同名函数时,它将返回一个错误 有什么解决办法吗 提前感谢..因为我使用了如下内容: SELECT CASE WHEN pg_proc.proretset THEN 'setof ' || pg_c
SELECT pg_get_function_identity_arguments('funcname'::regproc);
但在这里,当有多个同名函数时,它将返回一个错误
有什么解决办法吗
提前感谢..因为我使用了如下内容:
SELECT CASE
WHEN pg_proc.proretset
THEN 'setof ' || pg_catalog.format_type(pg_proc.prorettype, NULL)
ELSE pg_catalog.format_type(pg_proc.prorettype, NULL) END,
pg_proc.proargtypes,
pg_proc.proargnames,
pg_proc.prosrc,
pg_proc.proallargtypes,
pg_proc.proargmodes,
pg_language.lanname
FROM pg_catalog.pg_proc
JOIN pg_catalog.pg_namespace ON (pg_proc.pronamespace = pg_namespace.oid)
JOIN pg_catalog.pg_language ON (pg_proc.prolang = pg_language.oid)
WHERE
pg_proc.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype
AND (pg_proc.proargtypes[0] IS NULL
OR pg_proc.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype)
AND NOT pg_proc.proisagg
AND pg_proc.proname ilike 'MY_FUNCTION_NAME'
AND pg_namespace.nspname = 'public'
AND pg_catalog.pg_function_is_visible(pg_proc.oid);
查看结果的第二列和第三列。对于OP来说已经太晚了,但无论如何:我今天自己搜索了答案,没有找到需要的答案 我提出了这个解决方案: 选择 pronamespace::regnamespace, proname, pg_get_函数_argumentsoid为args_def,-带默认值的参数的完整定义 UNNESTstring_to_arraypg_get_function_identity_argumentsoid,','作为arg-类型为的每个参数 从…起 pg_程序 可以在postgresql 11.x中使用,我想它也可以在其他版本中使用,但没有经过测试
希望这对将来的人有所帮助。它的给定值为:proargtypes as和proargnames as您使用什么工具查看结果?在我的一个函数的psql和pgAdmin中,我看到:1043;{nr0}。{nr0}是唯一参数的名称,1043是类型。然后我选择pg_catalog.format_type'1043',NULL以查看1043表示字符变化。我使用SQuirrel SQL客户端查询数据库。在我的函数中,传递的参数不止一个,但在你的函数中只有一个参数,所以这会有什么区别吗?你能使用psql或pgAdmin吗?我用带有更多参数的函数测试了它,它返回'23 1043 1043 1114 23 1043 1043 1043 23 1043;{code,status_str,src,dbcurrenttimestamp,tmpuserid,remote_addr,sessionid,http_host,fu_index,script_name}'。您还可以尝试运行我的工具来报告数据库模式,并查看如何报告您的函数。。。与pgAdmin合作,谢谢。。。但它不是和松鼠一起工作的吗?有什么想法吗?