当前位置: 首页 > 知识库问答 >
问题:

在Oracle JDBC中,是否可以批处理存储过程调用并检索出参数?

庄康胜
2023-03-14

我在Oracle 11g数据库中有一个存储过程,如f(a输入,b输入,c输出)。我想在批处理模式下从JDBC调用它,然后读取所有的OUT变量。
这可能吗?到目前为止我有这个

  CallableStatement statement = connection.prepareCall("f(?, ?, ?)");
  for(Item i : items) {
     int i = 0;
     statement.setString(++i, item.getA());
     statement.setString(++i, item.getB());
     statement.registerOutParameter(++i, Types.NUMERIC);
     statement.addBatch();
  }
  statement.executeBatch();
  int[] answers =  ?

谢谢

共有1个答案

顾骏祥
2023-03-14

可悲的是,没有。

对CallableStatement对象进行批处理更新的能力与对PreparedStatement对象进行批处理更新的能力相同。事实上,CallableStatement对象被限制为PreparedStatement对象具有的相同功能。更准确地说,当使用批处理更新工具时,CallableStatement对象可以只调用接受输入参数的存储过程,也可以不调用任何参数。

参考:http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/callablestatement.html#1000220

 类似资料:
  • 我正在编写一个Spring批处理应用程序: null

  • 问题内容: 我正在将MyBAtis-3与MyBAtis- Spring一起使用。当我尝试调用使用MyBatis批注返回多个参数的存储过程时。我什么也没得到,我可以看到输入参数已传递到日志中的SP,并且挂在那里,没有进度,也没有抛出异常。 PFB我试图从MyBAtis访问的Oracle存储过程, PFB映射器接口方法, Test对象包含在存储过程调用语句中作为输入传递的参数。 当我执行此操作时,它会

  • 问题内容: 当我尝试从Rails调用存储过程时,出现以下异常: Rails Wiki中 有一个页面讨论用于解决此问题的MySQL适配器的修补程序,但是它已过时,似乎不再起作用。 配置代码正确地启用了存储过程,但是在存储过程调用之后连接仍然不同步并且新方法不再起作用,仍然存在问题。 关于如何使它工作的任何建议? 这是我正在使用的代码: 无论是否返回任何结果,它都会引发相同的异常。 问题答案: 将程序

  • 问题内容: 我目前正在从数据存储区中请求20个条目,使用游标将其返回给用户,以防用户要求更多条目,请将游标用作新起点,并询问下一个20个条目。 该代码看起来像 万一重要的是这里的完整代码:https : //github.com/koffeinsource/kaffeeshare/blob/master/data/appengine.go#L23 使用带有的循环看起来像是反模式,但是使用/ 时我看

  • 问题内容: 我在Google上搜索并不断提出“不,这是不可能的”,但是这些帖子的发布日期为2005-2007,所以我想知道是否已更改。一个代码示例: 解决方案之一是传递null,然后检查null并设置变量。我不想这样做,也不必这样做。如果这是真的,那么MySql开发人员需要唤醒,因为我可以用MSSQL做更多的事情。 问题答案: 仍然不可能。

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’