以下是我在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
&amp; Float
方法中的setObject
对象。仍然面临着这个问题。
答案 0 :(得分:0)
使用任何适当的数据类型,如java.sql.PreparedStatement.setString(index, "String value")
或
setInt()
或setDouble()