Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Alterando a precisão da coluna numérica no Oracle


Supondo que você não definiu uma precisão inicialmente, supõe-se que seja o máximo (38). Você está reduzindo a precisão porque está mudando de 38 para 14.

A maneira mais fácil de lidar com isso é renomear a coluna, copiar os dados e descartar a coluna original:
alter table EVAPP_FEES rename column AMOUNT to AMOUNT_OLD;

alter table EVAPP_FEES add AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_OLD;

alter table EVAPP_FEES drop column AMOUNT_OLD;

Se você realmente deseja manter a ordem das colunas, pode mover os dados duas vezes:
alter table EVAPP_FEES add AMOUNT_TEMP NUMBER(14,2);

update EVAPP_FEES set AMOUNT_TEMP = AMOUNT;

update EVAPP_FEES set AMOUNT = null;

alter table EVAPP_FEES modify AMOUNT NUMBER(14,2);

update EVAPP_FEES set AMOUNT = AMOUNT_TEMP;

alter table EVAPP_FEES drop column AMOUNT_TEMP;