2013-01-16 5 views
15

Si sta verificando quell'errore quando si tenta di inserire qualsiasi numero tranne 0 in un campo con formato NUMERO (2,2)."ORA-01438: valore maggiore della precisione specificata consentita per questa colonna" quando si inserisce 3

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

[Codice errore: 1438, SQL Stato: 22003] ORA-01438: valore maggiore di precisione specificata consentito per questa colonna

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

Succede anche se provo con i numeri decimali.

Qualche idea del perché?

+0

Se si sta tentando di limitare i valori a un intervallo oa numeri interi specifici, è preferibile utilizzare [controllo vincolo] (http://docs.oracle.com/cd/E14072_01/server.112/e10592 /clauses002.htm#SQLRF52204). –

risposta

23

Impossibile aggiornare con un numero maggiore di 1 per il tipo di dati number(2,2) perché, il primo parametro è il numero totale di cifre nel numero e il secondo (.ie 2 qui) è il numero di cifre in decimale parte. Immagino che tu possa inserire o aggiornare i dati < 1. Ad esempio 0.12, 0.95, ecc.

Controllare NUMERO DATATIPO in NUMBER Datatype.

17

NUMBER (precision, scale) significa precision numero di cifre totali, di cui scale cifre sono a destra del punto decimale.

NUMBER(2,2) in altre parole indica un numero con 2 cifre, entrambi decimali. È possibile utilizzare NUMBER(4,2) per ottenere 4 cifre, di cui 2 decimali. Attualmente puoi semplicemente inserire valori con una parte intera zero.

More info at the Oracle docs.

Problemi correlati