我们的合作伙伴数据库有时会收到以下错误:
ORA-01438: value larger than specified precision allows for this column
完整响应如下所示:
ORA-01438: value larger than specified precision allows for this column ORA-06512: at "UMAIN.PAY_NET_V1_PKG", line 176 ORA-06512: at line 1 5592988
导致此错误的原因是什么?
您要存储的数字对于该字段来说太大了.看看SCALE和PRECISION.两者之间的差异是您可以存储的小数位前面的位数.
select cast (10 as number(1,2)) from dual * ERROR at line 1: ORA-01438: value larger than specified precision allowed for this column select cast (15.33 as number(3,2)) from dual * ERROR at line 1: ORA-01438: value larger than specified precision allowed for this column
低端的任何东西都被截断(默默地)
select cast (5.33333333 as number(3,2)) from dual; CAST(5.33333333ASNUMBER(3,2)) ----------------------------- 5.33
该错误似乎不是字符字段之一,而是更多数字字段.(如果它是像WW提到的字符串问题,你会得到'值太大'或类似的东西.)可能你使用的数字超过了允许的数字,例如1,000000001在一个定义为数字的列中(10,2) ).
查看WW提到的源代码,找出可能导致问题的列.然后检查那里正在使用的数据.