我有一个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应该是正确的。
有人可以解释上面插入的错误吗?
答案 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