1
我使用的MS JDBC驅動程序調用一個2005 MS SQL Server存儲過程和要處理的結果集之前訪問輸出參數在SQL Server設置處理結果之前訪問輸出參數如下:通過JDBC
proc = "{call mySproc(?,?,?)}";
conn = ds.getConnection();
callableStmt = conn.prepareCall(proc);
callableStmt.setString(1,inputParam);
callableStmt.registerOutParameter(2,Types.INTEGER);
callableStmt.registerOutParameter(3,Types.INTEGER);
callableStmt.execute();
rs = (ResultSet)callableStmt.getResultSet();
output[0] = callableStmt.getInt(2); //@rc
output[1] = callableStmt.getInt(3); //@rs
if(output[0] != 0){
//do some stuff
} else {
// process result set
}
問題是在處理結果集之前訪問輸出參數會導致結果集關閉。
有沒有一種方法可以在不改變存儲過程的情況下執行此操作?
可以通過JDBC爲其他數據庫執行此操作。然而,從研究我發現JDBC Spec狀態:
最大的可移植性,某一調用的 ResultSet對象和更新計數應該 越來越 輸出參數的值之前處理。
MS JDBC驅動程序是否已經實施到法律規定,其他JDBC驅動程序是否提供了更靈活的實現?
希望有人能澄清我對這個問題的理解。