以下是我正在嘗試在Prepared語句中處理的查詢。其中AmountOnHand & ReorderPointAmt是數據類型Decimal。使用setObject方法時的算術溢出或其他算術異常
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));
但我不明白是什麼使查詢:2最終在異常。我正在使用java.sql.PreparedStatement.setObject(index, Object)
來提供Query:2的值。
我試過設置Double
& Float
對象setObject
方法。仍然面臨這個問題。
任何適當的數據類型,你能嘗試使用'java.sql.PreparedStatement.setDouble' – anubhava
問題是java.sql.PreparedStatement.setObject(..)自帶的框架。我不想編輯它。 – Eddy
你確定'ReorderPointAmt'是'Decimal'嗎? –