1

次を返すMS SQL Serverストアドプロシージャ(SQL Server 2012)があります。

  1. プロシージャの実行結果を一般的に記述した戻り値 (成功したか失敗したか) with return @RetCodestatement (RetCode は int 型)
  2. 1 つの結果セット (それぞれ 5 つのフィールドを持つ複数のレコード)
  3. 別の結果セット (それぞれ 3 つのフィールドを持つ複数のレコード)

Java の CallableStatement オブジェクトを使用して Groovy (および Java) コードからこのプロシージャを呼び出していますが、3 つの出力すべてを処理する正しい方法が見つかりません。

私の最後の試みは

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()

数時間にわたっていくつかのアプローチを試みましたが、正しいアプローチが見つかりませんでした。他のいくつかは別の例外を生成しました。

問題を解決してください。

前もって感謝します!

更新(Tim 用): コードを起動しているときに 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