23

尝试将除 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

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

知道为什么吗?

4

2 回答 2

37

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

请检查NUMBER Datatype中的 NUMBER DATATYPE 。

于 2013-01-16T11:59:47.503 回答
25

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

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

Oracle 文档中的更多信息

于 2013-01-16T11:59:00.697 回答