1

我有 MS SQL Server 存储过程(SQL Server 2012),它返回:

  1. return @RetCode用语句(RetCode 是 int 类型)描述过程执行结果的返回值(成功与否)
  2. 一个结果集(多条记录,每条记录 5 个字段)
  3. 另一个结果集(多条记录,每条记录 3 个字段)

我使用 Java 的 CallableStatement 对象从我的 Groovy(和 Java)代码中调用此过程,但我找不到处理所有三个输出的正确方法。

我的最后一次尝试是

CallableStatement proc = connection.prepareCall("{ ? = call Procedure_Name($param_1, $param_2)}")
proc.registerOutParameter(1, Types.INTEGER)
boolean result = proc.execute()
int returnValue = proc.getInt(1)
println(returnValue)
while(result){
    ResultSet rs = proc.getResultSet()
    println("rs")
    result = proc.getMoreResults()
}

现在我得到了例外:

Output parameters have not yet been processed. Call getMoreResults()

我尝试了几个小时的几种方法,但没有找到正确的方法。其他一些人产生了另一个例外。

你能帮我解决这个问题吗?

提前致谢!

更新(针对蒂姆):我在启动代码时看到了 rc:

 Connection connection = dbGetter().connection 
 CallableStatement proc = connection.prepareCall("{ ? = call Procedure_Name($param_1, $param_2)}") 
 boolean result = proc.execute() 
 while(result){ 
     ResultSet rs = proc.getResultSet() 
     println(rs) 
     result = proc.getMoreResults() 
 }

我将 rc 视为对象:net.sourceforge.jtds.jdbc.JtdsResultSet@1937bc8

4

0 回答 0