Table | Column | Data Type | Length | Precision | Scale | Primary Key | Nullable | Default | Comment |
---|
EMP | EMPNO | NUMBER | - | 4 | 0 | 1 | - | - | - |
| ENAME | VARCHAR2 | 10 | - | - | - |  | - | - |
| JOB | VARCHAR2 | 9 | - | - | - |  | - | - |
| MGR | NUMBER | - | 4 | 0 | - |  | - | - |
| HIREDATE | DATE | 7 | - | - | - |  | - | - |
| SAL | NUMBER | - | 37 | 2 | - |  | - | - |
| COMM | NUMBER | - | 7 | 2 | - |  | - | - |
| DEPTNO | NUMBER | - | 2 | 0 | - |  | - | |
the program i am executing is
DECLARE
E_NAME EMP.ENAME%TYPE;
E_MGR EMP.MGR%TYPE;
E_SAL EMP.SAL%TYPE;
CURSOR E_CUR IS
SELECT ENAME,MGR,SAL FROM EMP;
BEGIN
OPEN E_CUR;
DBMS_OUTPUT.PUT_LINE(E_NAME||' '|| E_MGR||' '||E_SAL);
LOOP
FETCH E_CUR INTO E_NAME,E_SAL,E_MGR;
IF E_SAL> 2000 THEN
UPDATE EMP SET SAL=SAL/1000 ;
DBMS_OUTPUT.PUT_LINE(E_NAME||' | '|| E_MGR||' | '||E_SAL);
EXIT WHEN E_CUR%NOTFOUND;
END IF;
END LOOP;
END
EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
---|
7839 | KING | PRESIDENT | - | 11/17/1981 | 21500 | - | 10 |
7698 | BLAKE | MANAGER | 7839 | 05/01/1981 | 19350 | - | 30 |
7782 | CLARK | MANAGER | 7839 | 06/09/1981 | 18950 | - | 10 |
7566 | JONES | MANAGER | 7839 | 04/02/1981 | 19475 | - | 20 |
7788 | SCOTT | ANALYST | 7566 | 12/09/1982 | 19500 | - | 20 |
7902 | FORD | ANALYST | 7566 | 12/03/1981 | 19500 | - | 20 |
7369 | SMITH | MANAGER | 7902 | 12/17/1980 | 16501 | - | 20 |
7499 | ALLEN | SALESMAN | 7698 | 02/20/1981 | 18100 | 300 | 30 |
7521 | WARD | SALESMAN | 7698 | 02/22/1981 | 17750 | 500 | 30 |
7654 | MARTIN | SALESMAN | 7698 | 09/28/1981 | 17750 | 1400 | 30 |
7844 | TURNER | SALESMAN | 7698 | 09/08/1981 | 18000 | 0 | 30 |
7876 | ADAMS | CLERK | 7788 | 01/12/1983 | 17600 | - | 20 |
7900 | JAMES | CLERK | 7698 | 12/03/1981 | 17450 | - | 30 |
7934 | MILLER | CLERK | 7782 | 01/23/1982 | 17800 | - | 10 |
the error i was getting is
ORA-06502: PL/SQL: numeric or value error: number precision too large