2016-09-16 7 views
0

で使用されている場合、JDBC呼び出し可能ステートメントはnull結果セットを返します。どのように私はcallablestatementを使用しています一時テーブルがSP

Connection con = getConnection(); 
CallableStatement call = con.prepareCall("{call SpName(?, ?)}"); 
call .setObject(1, params[0]); 
call .setObject(2, params[1]); 
call .execute(); 
ResultSet rs = call .getResultSet(); 

すべてのSPでうまくいきます。 しかし、SPで使用される一時テーブルがある場合、null Resultsetを返します。

+1

は私達にあなたのストアドプロシージャを表示して、おそらく我々はあなたを助けることができるでしょう。 –

+1

'execute'の結果をチェックしていないので、その真偽値の戻り値は、最初の結果が更新カウントか結果セットかを示します。ストアドプロシージャで 'set nocount on'を使用しなかった場合、最初の結果は更新カウントになります。 http://stackoverflow.com/questions/14829130/null-resultsets-when-calling-sybase-stored-procedure-through-jdbcおよびhttp://stackoverflow.com/questions/14690295/execute-sp-msforeachdb- in-a-java-application –

+0

@MarkRotteveel:ありがとう、私は答えで言及した他のリンクから同じ答えを見つけました。 –

答えて

1

は、このコード

while (true) { 
    rs = cstmt.getResultSet(); 
    int updateCount = cstmt.getUpdateCount(); 
    LogWriter.write(" Update count " + updateCount); 
    if (rs == null && updateCount == -1) { 
     break; 
    } 
    if (rs != null) { 
     // process the result set 
    } else { 
     System.out.println("Update count = " + cstmt.getUpdateCount()); 
    } 
    cstmt.getMoreResults(); 
} 

リファレンスを追加することによって、私の問題を解決:Here

関連する問題