当前位置:  开发笔记 > 数据库 > 正文

ORA-01438:大于指定精度的值允许此列

如何解决《ORA-01438:大于指定精度的值允许此列》经验,为你挑选了2个好方法。

我们的合作伙伴数据库有时会收到以下错误:

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
  

导致此错误的原因是什么?



1> Gary Myers..:

您要存储的数字对于该字段来说太大了.看看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


实际上,下端不是截断的,而是在Oracle中舍入:从双精度中选择强制转换(5.66666666为数字(3,2)); - >返回5.67

2> Thorsten..:

该错误似乎不是字符字段之一,而是更多数字字段.(如果它是像WW提到的字符串问题,你会得到'值太大'或类似的东西.)可能你使用的数字超过了允许的数字,例如1,000000001在一个定义为数字的列中(10,2) ).

查看WW提到的源代码,找出可能导致问题的列.然后检查那里正在使用的数据.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有