以下は、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
Object を設定してみました。setObject
まだ問題に直面しています。