使用setObject方法时算术溢出或其他算术异常

时间:2013-10-17 08:10:40

标签: java sql

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

1 个答案:

答案 0 :(得分:0)

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