少搬砖 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日

悬赏问题

  • ¥15 对于这个问题的代码运行
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败