插入失败,值为100,列定义为NUMBER(4,2)

时间:2018-03-30 03:34:31

标签: sql oracle

我有一个Oracle表如下。

---------------------- 1
$1,792,693,086.36 

当我尝试在此表中插入width = 100时,它不会抱怨该值大于精度。

create table test_table
(
  id number(19),
  width number(4,2)
);
  

错误:ORA-01438:大于允许的指定精度的值   这一栏

我在NUMBER的定义中阅读了Oracle的文档。基于此,似乎INSERT应该是正确的。

有人可以解释上面插入的错误吗?

2 个答案:

答案 0 :(得分:2)

根据OracleDocumentation,当您声明具有精度p和比例s的数字数据类型时,p表示您可以指定的位数,在您的情况下为4.当您的比例为2时,最大位数在十进制之前现在限制为2.所以在你的情况下,最大值是99.99。

答案 1 :(得分:0)

column_name NUMBER(精度,比例)

precision是总位数,scale是小数点右边的位数。

因此,根据您的列定义宽度数(4,2),它将允许最大数值为99.99。

参考https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1824