插入3时,"ORA-01438:此列允许的值大于指定的精度"

Lui*_*Sep 19 sql oracle

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

UPDATE
    PROG_OWN.PROG_TPORCENTAJE_MERMA
SET
    PCT_MERMA = 3
WHERE
    IDN_PORCENTAJE_MERMA = 1
Run Code Online (Sandbox Code Playgroud)

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

COLUMN_NAME DATA_TYPE   TYPE_NAME   COLUMN_SIZE   BUFFER_LENGTH   DECIMAL_DIGITS
PCT_MERMA   3           NUMBER      2             0               2
Run Code Online (Sandbox Code Playgroud)

如果我尝试十进制数字也会发生这种情况.

知道为什么吗?

Tec*_*hDo 30

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

请检查NUMBER数据类型中的NUMBER DATATYPE.


Joa*_*son 21

NUMBER (precision, scale)表示precision总位数,其中scale数字位于小数点右侧.

NUMBER(2,2)换句话说,是指一个带有2位数的数字,两者都是小数.您可能想要使用NUMBER(4,2)4位数,其中2位是小数.目前,您只需插入零整数部分的值即可.

有关Oracle文档的更多信息.