oracle-ecommerce-integration

Oracle & numbers

Se qualcuno ha tribolato con i numeri in Oracle allora si ritroverà in questa esperienza.

Cosa fare se dobbiamo cambiare la precisione di un numero e la tabella ha valori?

Chi ha provato con una alter table ha spesso trovato ostacoli da parte di Oracle.

Facciamo un esperimento vediamo come agire.

Prima una tabella sperimentale :

SQL> create table numeri ( numero number(10,8));
SQL> insert into numeri values (9.24);
SQL> insert into numeri values (9.338837223);

Verifichiamo:

SQL> select * from numeri;

NUMERO
----------
9.24
9.33883722

Proviamo a modificare:

SQL> alter table numeri modify ( numero number(10,10));
alter table numeri modify ( numero number(10,10))
*
ERROR at line 1:
ORA-01440: column to be modified must be empty to decrease precision or scale

Ma ecco il trucco: aumentando proporzionalmente (in questo caso di 2) precisione e scala (ossia 10+2,8+2), otteniamo:

SQL> alter table numeri modify ( numero number(12,10));

Table altered.

Ed è tutto qui.

Il motivo è semplice: alterando solo scala o precisione.si rischia di avere perdita di informazione, pertanto il motore ce lo vieta. Ma innalzando entrambi si risolve il problema.

Alla prossima esperienza.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *