2016-10-27 3 views
0

私は小売企業で働き、在庫をトレーラーに「積載」して店に発送するという事件を見ていました。SQLがテーブルに書き込もうとするときに問題が発生する。特定の精度よりも大きい値

私はいくつかのコードで問題が発生しました。プロセスはSQLテーブルに対して次の処理を実行しようとしています。

UPDATE RESV_LOCN_HDR SET RESV_LOCN_HDR.USER_ID = :1, RESV_LOCN_HDR.CURR_WT = :2, RESV_LOCN_HDR.CURR_VOL = :3, RESV_LOCN_HDR.CURR_UOM_QTY = :4, RESV_LOCN_HDR.MOD_DATE_TIME = :5 WHERE (RESV_LOCN_HDR.LOCN_ID = :6) 

The input variables for reference are; 
input variables 
    1: Address(309adbdc) Length(0) Type(8) "RFUSER" - Indicator @ 309ad7d4 = 0 
    2: Address(309ae02c) Length(0) Type(4) "11047.4" - Indicator @ 309ad9b8 = 0 
    3: Address(309ae1ac) Length(0) Type(4) "-1.01e+09" - Indicator @ 309ada3c = 0 
    4: Address(309ae32c) Length(0) Type(4) "-57" - Indicator @ 309adac0 = 0 
    5: Address(309ae55c) Length(0) Type(7) "10/27/2016 2:57:50 PM" - Indicator @ 309adb70 = 0 
    6: Address(309ade0c) Length(0) Type(8) "600062508" - Indicator @ 309ad8d0 = 0 

私は(USER_ID、CURR_WT、CURR_VOL、CURR_UOM_QTY、MOD_DATE_TIME、LOCN_ID全てに書いていた列は、次のデータ型を持っている。

USER_ID = VARCHAR2(15 CHAR) 
CURR_WT, CURR_VOL = NUMBER(13,4) 
CURR_UOM_QTY = NUMBER(9,2) 
MOD_DATE_TIME = DATE 
LOCN_ID = VARCHAR2(10 CHAR) 

私の理解から(と私はあなたの確信しています」 CURR_UOM_QTYは-1.01e + 09を書き込もうとしていますが、今はそれが私だけか、エラーが返されている理由ですか?そうではありませんか?上記のデータがマクロなのか?それとも同様のもの?

1.01e + 09を書き込む前に、数値データを書き込むだけでなく、混合して書き込む必要があります。

oracle 11gを使用してください。

+0

これは数値です。 Google *科学的数値表記*。 –

答えて

0

はい、-1.01e + 09の値は、小数点精度が4で、その値の小数点以下がより多くなるため、エラーが発生する理由です。自動的に小数点第4位を四捨五入しません。

関連する問題