0

以下是我试图在 Prepared 语句中处理的查询。其中 AmountOnHand & ReorderPointAmt 是 Decimal 数据类型。

Query 1: SELECT AmountOnHand FROM TableA WHERE AmountOnHand <= (ReorderPointAmt*56.0/100);

其中 56.0 是一个动态值。

所以我更新了查询如下

Query 2: SELECT AmountOnHand FROM TableA WHERE AmountOnHand <= (ReorderPointAmt*?);

但是当这个查询被执行时,我得到了以下异常:

Arithmetic overflow or other arithmetic exception occurred.. SQLCODE=-802, SQLSTATE=22003, DRIVER=4.15.82.

我可以通过更新如下查询来解决此问题

 Query 3: SELECT AmountOnHand FROM TableA WHERE AmountOnHand <= (ReorderPointAmt * CAST(? AS DECIMAL));

但我不明白是什么让 Query:2 以异常告终。我java.sql.PreparedStatement.setObject(index, Object)用来提供 Query:2 的值。

我尝试通过在方法中设置Double&Float对象。setObject仍然面临这个问题。

4

1 回答 1

0

使用任何适当的数据类型,如java.sql.PreparedStatement.setString(index, "String value")or setInt()setDouble()

于 2013-10-17T08:12:47.450 回答