PostgreSql的PROCEDURE在Java中如何调用?(问的是PROCEDURE而不是function,PostgreSql使用的是12)

问题遇到的现象和发生背景

我要在Java代码中调用 p_proc_info 这个存储过程 ,它是PROCEDURE而不是function

问题相关代码,请勿粘贴截图

dbCstmt = dbConn.prepareCall("{call p_proc_info(?,?,?)}");
dbCstmt.setString(1, pMsg);
dbCstmt.registerOutParameter(2, Types.INTEGER);
dbCstmt.registerOutParameter(3, Types.VARCHAR);

运行结果及报错内容

org.postgresql.util.PSQLException: ERROR: function p_proc_info(character varying) does not exist
建议:No function matches the given name and argument types. You might need to add explicit type casts.

我的解答思路和尝试过的方法
我想要达到的结果

java里调用postgresql的procedure这个问题,在以前的确有人讨论过,当时给出的解决方式是,把数据库里的这个procedure对象改成function对象,并在function的最后随便返回一个值就行了。
早期的postgresql只有function,没有procedure,因此老版本的jdbc驱动只会去检查function。
然后我在检索相关文档的时候,找到一篇这样的文章

此文章中的方法的确可以正常调用procedure,但是他之前的报错和你的不一样,你的是提示没有找到该函数,他的报错提示这是一个过程。
如果确定jdbc的版本及调用命令没问题的话,那你就得检查一下参数类型了。postgresql识别函数或者过程不仅仅是靠的名称,还依赖于传入传出的参数类型。

调用方法没错,但找不到function p_proc_info

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

直接 select *from xxx()就行了