ORA-01438值不适合定义的Number(11,7)数据类型

时间:2016-06-17 12:12:24

标签: oracle oracle11g

我理解Number数据类型的想法,并且我对此页面中的信息http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#i22289

表示感谢。

然而,看起来我仍然想念一些东西,因为我真的不明白为什么会收到此错误 ORA-01438

select cast (18000.0 as number(11,7)) from dual;

结果

ORA-01438: value larger than specified precision allowed for this column
01438. 00000 -  "value larger than specified precision allowed for this column"
*Cause:    When inserting or updating records, a numeric value was entered
           that exceeded the precision defined for the column.
*Action:   Enter a value that complies with the numeric column's precision,
           or use the MODIFY option with the ALTER TABLE command to expand
           the precision.

同时将比例从7减少到6作为魅力

select cast (18000.0 as number(11,6)) from dual;

这是在' Oracle数据库11g企业版第11.2.0.4.0版 - 64位生产'

下发生的

有人可以告诉我为什么会这样。

谢谢你,感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

number(11,7)允许为11位且7位数的数字。这反过来意味着你有11-7 = 4个非小数位数。

18000作为五个非小数位数,这是一个太多