sql >> Base de Datos >  >> RDS >> Oracle

Cambiar la precisión de la columna numérica en Oracle

Suponiendo que no estableció una precisión inicialmente, se supone que es el máximo (38). Estás reduciendo la precisión porque la estás cambiando de 38 a 14.

La forma más fácil de manejar esto es cambiar el nombre de la columna, copiar los datos y luego soltar la columna 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;

Si realmente desea conservar el orden de las columnas, puede mover los datos dos veces:

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;