获取存储过程的十进制输出参数时的JDBC异常

时间:2012-08-22 13:56:35

标签: java stored-procedures jdbc out-parameters

我试图从MYSQL程序中获取参数。 我的过程:

CREATE PROCEDURE proc(someIn INT UNSIGNED, 
                      anotherIn INT UNSIGNED, 
                      OUT x DECIMAL(10,7),
                      OUT y DECIMAL(10,7))

我的java代码:

CallableStatement cs = conn.prepareCall("{call proc(?, ?,?,?)}");
cs.setLong(1, someLong);
cs.setLong(2, anotherLong);
cs.registerOutParameter(3,Types.DECIMAL,7);
cs.registerOutParameter(4,Types.DECIMAL,7);
rs = cs.executeQuery();
if (rs.next()) {
    double x = rs.getBigDecimal(3).doubleValue(); 
    double y = rs.getBigDecimal(4).doubleValue();
}

我在调用rs.next()时遇到错误:

  

java.sql.SQLException:ResultSet来自UPDATE。没有数据。

如果我手动调用相同参数的程序,我会得到结果数据。 我试图将小数改为double,但这没有效果。

1 个答案:

答案 0 :(得分:3)

调用程序的正确方法是:

cs.execute();
double x = cs.getBigDecimal(3).doubleValue(); 
double y = cs.getBigDecimal(4).doubleValue();