以下是我试图在 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
仍然面临这个问题。