ALTER TABLE t MODIFY (col NUMBER(16,5)) 要求列為空或無數據,否則報錯 ORA-01440。因為精度增加屬於元數據變更,Oracle 不允許在線擴展小數位。
CREATE TABLE t_new AS SELECT * FROM t WHERE 1=0; 然後 ALTER TABLE t_new MODIFY (col NUMBER(16,5));INSERT INTO t_new SELECT * FROM t; 原有兩位小數會自動補齊為 .000。NUMBER(16,5) 整數位是否足夠(16-5=11 位),防止溢出。DBMS_REDEFINITION 在線重定義。