我理解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位生产'
下发生的有人可以告诉我为什么会这样。
谢谢你,感谢任何帮助。
答案 0 :(得分:2)
number(11,7)
允许总为11位且7位数的数字。这反过来意味着你有11-7 = 4个非小数位数。
18000
作为五个非小数位数,这是一个太多