PL/SQL
Cursor
SQL>
create table emp(empno number(5),empname varchar(2),dob date, basicpay
number(5),da number(5),allowance number(5),tax number(5),lic number(5),
grosspay number(5));
Table created.
SQL>
insert into emp values(&empno,'&empname','&dob',&basicpay,&da,
&allowance,&tax,&lic,&grosspay);
Enter value for
empno: 101
Enter value for
empname: Aa
Enter value for
dob: 12-MAR-1990
Enter value for
basicpay: 10000
Enter value for
da: 4500
Enter value for
allowance: 2000
Enter value for
tax: 1000
Enter value for
lic: 1200
Enter value for
grosspay: 0
old 1:
insert into emp
values(&empno,'&empname','&dob',&basicpay,&da,&allowance,&tax,&lic,&grosspa
new 1:
insert into emp values(101,'Aa','12-MAR-1990',10000,4500,2000,1000,1200,0)
1 row created.
SQL>
/
Enter value for
empno: 103
Enter value for
empname: Cc
Enter value for
dob: 26-SEP-1975
Enter value for
basicpay: 17000
Enter value for
da: 3200
Enter value for
allowance: 2100
Enter value for
tax: 1200
Enter value for
lic: 1500
Enter value for
grosspay: 0
old 1:
insert into emp
values(&empno,'&empname','&dob',&basicpay,&da,&allowance,&tax,&lic,&grosspa
new 1:
insert into emp values(103,'Cc','26-SEP-1975',17000,3200,2100,1200,1500,0)
1 row created.
SQL>
/
Enter value for
empno: 105
Enter value for
empname: Ee
Enter value for
dob: 17-JAN-1989
Enter value for
basicpay: 15500
Enter value for
da: 3500
Enter value for
allowance: 2500
Enter value for
tax: 1000
Enter value for lic:
1600
Enter value for
grosspay: 0
old 1:
insert into emp
values(&empno,'&empname','&dob',&basicpay,&da,&allowance,&tax,&lic,&grosspa
new 1:
insert into emp values(105,'Ee','17-JAN-1989',15500,3500,2500,1000,1600,0)
1 row created.
SQL>
/
Enter value for
empno: 106
Enter value for
empname: Ff
Enter value for
dob: 09-APR-1986
Enter value for
basicpay: 60000
Enter value for
da: 5400
Enter value for
allowance: 3600
Enter value for
tax: 1600
Enter value for
lic: 1800
Enter value for
grosspay: 0
old 1:
insert into emp
values(&empno,'&empname','&dob',&basicpay,&da,&allowance,&tax,&lic,&grosspa
new 1:
insert into emp values(106,'Ff','09-APR-1986',60000,5400,3600,1600,1800,0)
1 row created.
SQL>
/
Enter value for
empno: 108
Enter value for
empname: Gg
Enter value for
dob: 07-OCT-1978
Enter value for
basicpay: 32000
Enter value for
da: 4500
Enter value for
allowance: 3200
Enter value for
tax: 1400
Enter value for
lic: 1600
Enter value for
grosspay: 0
old 1:
insert into emp values(&empno,'&empname','&dob',&basicpay,&da,&allowance,&tax,&lic,&grosspa
new 1:
insert into emp values(108,'Gg','07-OCT-1978',32000,4500,3200,1400,1600,0)
1 row created.
SQL>
select * from emp;
EMPNO EM DOB
BASICPAY DA
ALLOWANCE TAX
LIC GROSSPAY
---------- -- --------- --------------- ---------- -------------------
---------- ---------- ----------
101 Aa
12-MAR-90
10000
4500
2000 1000
1200 0
103 Cc 26-SEP-75
17000
3200
2100
1200
1500 0
105 Ee
17-JAN-89
15500
3500 2500 1000
1600 0
EMPNO EM DOB
BASICPAY DA
ALLOWANCE
TAX LIC GROSSPAY
---------- -- --------- --------------- ---------- -------------------
---------- ---------- ----------
106 Ff
09-APR-86
60000
5400 3600
1600
1800 0
108 Gg
07-OCT-78
32000
4500
3200
1400
1600 0
SQL> ed
Wrote file
afiedt.buf
line 25 truncated.
1 declare
2 cursor c is select * from emp order by grosspay desc;
3 rec emp % rowtype;
4 cnt integer:=0;
5 begin
6 open c;
7 loop
8 fetch c into rec;
9 exit when c% notfound;
10
if(cnt<5) then
11
update emp set grosspay=(rec.basicpay+rec.da+rec.allowance)-(rec.lic+rec.tax)
where empno=rec.e
12
dbms_output.put_line('Employee no:'||rec.empno);
13
dbms_output.put_line('Name:'||rec.empname);
14
dbms_output.put_line('Basic Pay:'||rec.basicpay);
15
dbms_output.put_line('DA:'||rec.da);
16
dbms_output.put_line('Allowance:'||rec.allowance);
17
dbms_output.put_line('Tax:'||rec.tax);
18
dbms_output.put_line('LIC:'||rec.lic);
19
dbms_output.put_line('Grosspay:'||rec.grosspay);
20
cnt:=cnt+1;
21
end if;
22
end loop;
23
close c;
24*
end;
25
/
PL/SQL procedure
successfully completed.
SQL>
select * from emp;
EMPNO EM DOB
BASICPAY DA ALLOWANCE
TAX LIC GROSSPAY
---------- -- --------- --------------- ---------- -------------------
---------- ---------- ----------
101 Aa 12-MAR-90 10000
4500 2000 1000
1200 14300
103
Cc 26-SEP-75
17000
3200 2100
1200 1500
19600
105 Ee 17-JAN-89
15500
3500
2500 1000
1600 18900
EMPNO EM DOB BASICPAY
DA ALLOWANCE
TAX LIC GROSSPAY
---------- -- --------- --------------- ---------- -------------------
---------- ------- ----------
106 Ff 09-APR-86
60000
5400
3600 1600
1800 65600
108 Gg 07-OCT-78
32000
4500 3200 1400
1600 36700
No comments:
Post a Comment