我要在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
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!直接 select *from xxx()就行了