You can only decrease the precision of a numeric column if there are no rows in the table or the column contains null values.
SQL> -- create demo table
SQL> create table Employee(
2 ID VARCHAR2(4 BYTE) NOT NULL,
3 First_Name VARCHAR2(10 BYTE),
4 Last_Name VARCHAR2(10 BYTE),
5 Start_Date DATE,
6 End_Date DATE,
7 Salary Number(8,2),
8 City VARCHAR2(10 BYTE),
9 Description VARCHAR2(15 BYTE)
10 )
11 /
Table created.
SQL>
SQL> -- display data in the table
SQL> select * from Employee
2 /
no rows selected
SQL>
SQL> desc employee;
Name Null? Type
--------------------------
ID NOT NULL VARCHAR2(4)
FIRST_NAME VARCHAR2(10)
LAST_NAME VARCHAR2(10)
START_DATE DATE
END_DATE DATE
SALARY NUMBER(8,2)
CITY VARCHAR2(10)
DESCRIPTION VARCHAR2(15)
SQL>
SQL> ALTER TABLE employee
2 MODIFY salary NUMBER(2,2);
Table altered.
SQL>
SQL> desc employee;
Name Null? Type
------------------
ID NOT NULL VARCHAR2(4)
FIRST_NAME VARCHAR2(10)
LAST_NAME VARCHAR2(10)
START_DATE DATE
END_DATE DATE
SALARY NUMBER(2,2)
CITY VARCHAR2(10)
DESCRIPTION VARCHAR2(15)
SQL>
SQL> select * from employee;
no rows selected
SQL>
SQL> -- clean the table
SQL> drop table Employee
2 /
Table dropped.
SQL>