1

我正在尝试创建一个简单地将行插入表中的 Oracle 存储过程。表 (MEAS_IND) 中有一个 char(1 字节) 类型的列,不能为空。当我尝试将任何一个字符插入列/表时,我收到错误:

ORA-01481: 无效的数字格式模型
ORA-06512:在“IFDC.PKG_FIELD_ASSISTANT”,第 326 行
ORA-06512: 在第 3 行
01481. 00000 - “无效的数字格式模型”
*原因:用户试图将数字转换为字符串
           通过 TO_CHAR 或通过 TO_NUMBER 到数字的字符串并具有
           提供了无效的数字格式模型参数。
*行动:查阅您的手册。

我试过插入'','N'和to_char('')。还有其他列不能为空,并且似乎工作正常。当我注释掉 MEAS_IND 时,我得到它不能为空的错误,所以我假设其他列都很好。这是代码:

INSERT INTO myTable
          (
            cont_id
            , cms_uid
            , dwr_dt
            , prj_nbr
            , ln_itm_nbr
            , loc_seq_nbr
            , loc_instld
            , vend_id
            , rpt_qty
            , itm_cd
            , last_modfd_uid
            , last_modfd_dt
            , catg_nbr
            , rmrks_id, plan_pg_ref_nbr, ref_doc, fr_sta_itm, fr_sta_dstnc, fr_sta_offst_t, fr_sta_offst_dstnc
            , to_sta_itm, to_sta_dstnc, to_sta_offst_t, to_sta_offst_dstnc, meas_ind
          )
       VALUES
          (
            pContractId
            , pUSER_ID
            , pDRW_DATE
            , pProject_num
            , pPLN
            , vMaxLocSeq
            , pLocation
            , pVend_id
            , pAmount
            , pItemCode
            , pUSER_ID
            , to_number(sysdate, 'YYYYMMDD')
            , vCatigoryNumber
            , ' ', ' ', ' ', ' ', 0, ' ', 0
            , ' ', 0, ' ', 0, ' '
          ) ;

提前致谢

4

1 回答 1

5

而不是to_number(sysdate, 'YYYYMMDD'),请执行以下操作:

to_number(to_char(sysdate, 'YYYYMMDD'))

更好的是,如果在项目中还不算太晚,那么将last_modfd_dt列更改为一种DATE类型。该DATE类型将包括日期时间(小时、分钟、秒,但没有小数秒)。如果您只想要没有时间的日期,请将其设置为trunc(sysdate).

于 2013-05-31T14:29:00.140 回答