【问题标题】:JDBC exception at getting decimal out parameter of stored procedure获取存储过程的小数输出参数时的 JDBC 异常
【发布时间】:2012-08-17 23:22:40
【问题描述】:

我正在尝试从 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。没有数据。

如果我手动调用具有相同参数的过程,我会得到结果数据。 我试图将小数更改为双精度,但这没有效果。

【问题讨论】:

  • 卢卡斯是对的。谢谢你,卢卡斯!

标签: java stored-procedures jdbc out-parameters


【解决方案1】:

调用过程的正确方法是这样的:

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

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    相关资源
    最近更新 更多