CallableStatement、OUT 参数和传递非 JDBC 参数表达式作为参数 - 索引如何工作?

问题描述

有关存储过程的OUT 参数与各种其他 JDBC 功能的交互的文档似乎非常模糊。我是否正确假设,传递给 registerOutParameter 方法的索引必须是过程参数的从 1 开始的索引,并且与作为参数传递的 PreparedStatement 参数的索引不同对于那个参数?当过程的参数是文字(或不依赖于 JDBC 参数的 sql 表达式),或者当参数表达式依赖于两个 JDBC 参数时,可能会出现差异/歧义。

c.prepareCall("{? = call myfunc(?,1,?,? + ?,2)}")
  1. 在例子中,如果程序的最后三个参数是IN/OUT参数,那么应该注册的索引是1、4、5、6 - 正确吗?
  2. 如果我切换到 {call myfunc(?,2)} 的过程语法,它们会下降 1 到 3、4、5 - 对吗?
  3. 通过实验,我发现可以通过 (ResultSet) getobject(i) 检索游标 OUT 参数,除非它是函数的返回类型,在这种情况下,它变成了简单的 'statement.getResultSet` .此行为是否独立于供应商?
  4. 如果 CallableStatement 是批处理的,是否可以检索 OUT 参数?如果是,是否只有最后一次执行的结果可用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)