ind*_*ath 1 sql oracle ora-01481
我正在尝试创建一个只是在表中插入行的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, ' '
) ;
Run Code Online (Sandbox Code Playgroud)
提前致谢
而不是to_number(sysdate, 'YYYYMMDD'),这样做:
to_number(to_char(sysdate, 'YYYYMMDD'))
Run Code Online (Sandbox Code Playgroud)
更好的是,如果在项目中不是太晚,那么将last_modfd_dt列更改为DATE类型.的DATE类型将包括日期和当天(小时,分钟,秒,但没有小数秒)的时间.如果您只想要没有时间的日期,请将其设置为trunc(sysdate).