SQL尝试写入表时遇到问题。值大于特定精度

时间:2016-10-27 15:33:06

标签: mysql oracle11g oracle-sqldeveloper

所以我在一家零售公司工作,并参与了一个我必须系统地加载'一些库存到预告片上,然后发送到商店。

所以我遇到了一些执行的代码问题,该进程正在尝试对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。

1 个答案:

答案 0 :(得分:0)

是的,-1.01e + 09的值是您收到错误的原因,因为您的小数精度为4且该值有更多的小数。它不会自动舍入到小数点后四位。