首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-01438:此列允许的值大于指定的精度

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

Stack Overflow用户
提问于 2008-10-08 12:30:12
回答 9查看 155.8K关注 0票数 17

有时,我们会从合作伙伴的数据库中得到以下错误:

代码语言:javascript
运行
复制
<i>ORA-01438: value larger than specified precision allows for this column</i>

完整的响应如下所示:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="windows-1251"?>
<response>
  <status_code></status_code>
  <error_text>ORA-01438: value larger than specified precision allows for this column ORA-06512: at &quot;UMAIN.PAY_NET_V1_PKG&quot;, line 176 ORA-06512: at line 1</error_text>
  <pay_id>5592988</pay_id>
  <time_stamp></time_stamp>
</response>

此错误的原因可能是什么?

EN

回答 9

Stack Overflow用户

发布于 2010-04-30 07:44:27

您尝试存储的数字对于该字段而言太大。看看它的规模和精度。两者之间的区别在于您可以存储的小数位前面的位数。

代码语言:javascript
运行
复制
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

低端的任何东西都会被截断(静默地)

代码语言:javascript
运行
复制
select cast (5.33333333 as number(3,2)) from dual;
CAST(5.33333333ASNUMBER(3,2))
-----------------------------
                         5.33
票数 16
EN

Stack Overflow用户

发布于 2008-10-08 04:56:21

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

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

票数 7
EN

Stack Overflow用户

发布于 2008-10-08 04:35:31

这表明您正在尝试将某个太大的内容放入列中。例如,您有一个VARCHAR2(10)列,您要输入11个字符。数字也是如此。

这发生在UMAIN包的第176行。你需要去看看它,看看它在做什么。希望你能在你的源码控制中(或从user_source中)找到它。更高版本的Oracle会更好地报告此错误,告诉您哪一列和什么值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/181344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档