我使用MS JDBC驱动程序调用2005 MS SQL Server存储过程,希望在处理结果集之前访问输出参数,如下所示:
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
国家:
为了最大限度地提高可移植性,呼叫
结果集对象和更新计数
应该在得到
输出参数的值。
MS JDBC驱动程序是否已按法律规定实施,其他JDBC驱动程序是否提供了更灵活的实施?
希望有人能澄清我对这个问题的理解。