我正在尝试创建一个只是在表中插入一行的Oracle存储过程。表中有一列(MEAS_IND),类型为char(1字节),不能为空。当我尝试将任何一个字符插入列/表时,我得到错误:
ORA-01481: invalid number format model ORA-06512: at "IFDC.PKG_FIELD_ASSISTANT", line 326 ORA-06512: at line 3 01481. 00000 - "invalid number format model" *Cause: The user is attempting to either convert a number to a string via TO_CHAR or a string to a number via TO_NUMBER and has supplied an invalid number format model parameter. *Action: Consult your manual.
我尝试插入'','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, ' '
) ;
提前致谢
答案 0 :(得分:5)
而不是to_number(sysdate, 'YYYYMMDD')
,请执行以下操作:
to_number(to_char(sysdate, 'YYYYMMDD'))
更好的是,如果项目中的时间不晚,则将last_modfd_dt
列更改为DATE
类型。 DATE
类型将包含日期和一天中的时间(小时,分钟,秒,但不包括小数秒)。如果您只想要没有时间的日期,请将其设置为trunc(sysdate)
。