我使用java访问mssql 2012 DB
我有一个存储过程“procX”,在参数中只取1,(比如命名为@ p1)并返回单个结果集。它工作正常,除非我在获得结果集之前尝试读取返回值。代码如下。如果我删除“//”并获得返回值,则会得到null
作为结果。
cs = con.prepareCall("{? = call procX(?)}");
cs.registerOutParameter(1, Types.INTEGER);
cs.setInt("p1", 1);
cs.execute();
//cs.getInt(1);
rs = cs.getResultSet();
即使我在获得结果集后读取了返回值,也会关闭结果集。
有没有办法读取返回值而不会无法获得结果集?
据我所知,这种情况不仅限于返回值,也适用于任何其他输出参数。
答案 0 :(得分:1)
看起来你必须在读取任何输出参数之前获得结果集。
获取详细信息答案 1 :(得分:0)
很有意思,
java.util.logging.Logger
用于在执行每个之前/之后进行记录
操作。getValue
方法的SQL Server的Microsoft JDBC驱动程序中有一些有趣的逻辑(带有Closeable接口),它从getInt
方法调用。