少搬砖 2022-01-21 11:00 采纳率: 100%
浏览 76
已结题

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.

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

4条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-01-21 14:31
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月21日