插入 3 时出现“ORA-01438: 值大于此列允许的指定精度”

Posted

技术标签:

【中文标题】插入 3 时出现“ORA-01438: 值大于此列允许的指定精度”【英文标题】:"ORA-01438: value larger than specified precision allowed for this column" when inserting 3 【发布时间】:2013-01-16 11:52:18 【问题描述】:

我在尝试将除 0 以外的任何数字插入格式为 NUMBER (2,2) 的字段时遇到该错误。

UPDATE
    PROG_OWN.PROG_TPORCENTAJE_MERMA
SET
    PCT_MERMA = 3
WHERE
    IDN_PORCENTAJE_MERMA = 1

[错误代码:1438,SQL 状态:22003] ORA-01438:该列允许的值大于指定的精度

COLUMN_NAME DATA_TYPE   TYPE_NAME   COLUMN_SIZE   BUFFER_LENGTH   DECIMAL_DIGITS
PCT_MERMA   3           NUMBER      2             0               2

如果我尝试使用十进制数字,也会发生这种情况。

知道为什么吗?

【问题讨论】:

如果您试图将值限制在某个范围或特定整数内,最好使用check constraint。 【参考方案1】:

对于数据类型number(2,2),您不能使用大于 1 的数字进行更新,因为第一个参数是数字中的总位数,第二个参数(此处为 2)是小数部分。我猜你可以插入或更新数据< 1。即 0.12、0.95 等。

请检查NUMBER Datatype中的NUMBER DATATYPE。

【讨论】:

【参考方案2】:

NUMBER (precision, scale) 表示precision 的总位数,其中scale 位数在小数点右边。

NUMBER(2,2) 换句话说就是一个有 2 位数字的数字,这两个数字都是小数。您可能的意思是使用NUMBER(4,2) 来获得4 位数字,其中2 位是小数。目前您可以只插入零整数部分的值。

More info at the Oracle docs.

【讨论】:

以上是关于插入 3 时出现“ORA-01438: 值大于此列允许的指定精度”的主要内容,如果未能解决你的问题,请参考以下文章

错误:“ORA-01438:值大于此列允许的指定精度”故障因素:“空”详细信息:org.kxml2.kdom.Node@99c0b9c

endnote插入文献时出现{,#}这样的乱码

通过 UCanAccess 插入时出现“强制转换的字符值无效”错误

将公式插入单元格 VBA Excel 时出现运行时错误 1004

将结构插入地图时出现分段错误

为啥插入子文档数组时出现“重复键错误”?