所以我在一家零售公司工作,并参与了一个我必须系统地加载'一些库存到预告片上,然后发送到商店。
所以我遇到了一些执行的代码问题,该进程正在尝试对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)
根据我的理解(我确定你们都会看到上面的内容,除了3之外所有列数据类型都被满足:CURR_UOM_QTY试图写-1.01e + 09,现在是它只是我或这是错误被返回的原因?是不是上述数据是宏?或类似的东西?
只是没有看到SQL尝试编写1.01e + 09之前,因为它应该只是写数字数据,而不是混合。
使用oracle 11g。
答案 0 :(得分:0)
是的,-1.01e + 09的值是您收到错误的原因,因为您的小数精度为4且该值有更多的小数。它不会自动舍入到小数点后四位。