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

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日

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R