Untitled

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Ex.

No:01 Demonstrate DDL, DML and Aggregate function

• Create the table with neccessary fields and constraints.


• Insert data into the table.
• View the table.
• View only eno & bsal from emp table.
• View all the details of emp those who are in dept no 10.
• Find the maximum bsal from emp table.
• Find the minimum bsal from emp table.
• Find the average bsal from emp table.
• Find the sum bsal from emp table.
• Find the sum of sal for those who are in dept 10 from emp table.
• Find the sum of sal for those who are in dept 20 from emp table.
• Data in the table in ascending order based on name.
• Data in the table in descending order based on name.

create table emp(eno number(5)primary key,ename varchar2(10)not null,dob date not null,doj date not
null,deptno number(5)not null,bsal number(10,2)not null);

insert into emp values(&eno,'&ename','&dob','&doj',&deptno,&bsal);

Enter value for eno: 101


Enter value for ename: karthick
Enter value for dob: 17-oct-1995
Enter value for doj: 11-may-2018
Enter value for deptno: 10
Enter value for bsal: 35000

Enter value for eno: 102


Enter value for ename: harish
Enter value for dob: 10-jul-1985
Enter value for doj: 07-sep-2005
Enter value for deptno: 10
Enter value for bsal: 28000

Enter value for eno: 103


Enter value for ename: balaji
Enter value for dob: 14-jun-1989
Enter value for doj: 18-mar-2007
Enter value for deptno: 20
Enter value for bsal: 20000

Enter value for eno: 104


Enter value for ename: sathish
Enter value for dob: 20-may-1990
Enter value for doj: 10-jun-2013
Enter value for deptno: 10
Enter value for bsal: 25000
Enter value for eno: 105
Enter value for ename: mani
Enter value for dob: 16-feb-2001
Enter value for doj: 15-nov-2022
Enter value for deptno: 20
Enter value for bsal: 18000

select*from emp;

ENO ENAME DOB DOJ DEPTNO BSAL


101 Karthick 17-0CT-95 11-MAY-18 10 35000
102 Harish 10-JUL-85 07-SEP-05 10 28000
103 Balaji 14-JUN-89 18-MAR-07 20 20000
104 Sathish 20-MAY-90 10-JUN-13 10 25000
105 Mani 16-FEB-01 15-NOV-22 20 18000

select eno,bsal from emp;

ENO BASL
101 35000
102 28000
103 20000
104 25000
105 18000

select*from emp where deptno=10;

ENO ENAME DOB DOJ DEPTNO BSAL


101 Karthick 17-OCT-95 11-MAY-18 10 35000
102 Harish 10-JUL-85 07-SEP-05 10 28000
104 Sathish 20-MAY-90 10-JUN-13 10 25000

select max (bsal) from emp;

MAX(BSAL)
35000

select min (bsal) from emp;

MIN(BSAL)
18000

select avg (bsal) from emp;

AVG(BSAL)
25200
select sum (bsal) from emp;

SUM(BSAL)
126000

select sum (bsal) sumfordept10 from emp where deptno=10;

SUMFORDEPT10
88000

select sum (bsal) sumfordept20 from emp where deptno=20;

SUMFORDEPT20
38000

select*from emp order by enameasc;

ENO ENAME DOB DOJ DEPTNO BSAL


103 balaji 14-JUN-89 18-MAR-07 20 20000
102 harish 10-JUL-85 07-SEP-05 10 28000
101 karthick 17-0CT-95 11-MAY-18 10 35000
105 mani 16-FEB-01 15-NOV-22 20 18000
104 sathish 20-MAY-90 10-JUN-13 10 25000

select*from emp order by dob desc;

ENO ENAME DOB DOJ DEPTNO BSAL


105 mani 16-FEB-01 15-NOV-22 20 18000
101 karthick 17-0CT-95 11-MAY-18 10 35000
104 sathish 20-MAY-90 10-JUN-13 10 25000
103 balaji 14-JUN-89 18-MAR-07 20 20000
102 harish 10-JUL-85 07-SEP-05 10 28000
Ex.No:02 Demonstration of Joins using student details.

• Creating the table with necessary constraints.


• Insert data into the table.
• View the table.
• View by joining the admission & registration table.
• Finding the total and average of the mark from mark table.
• Add aadhar no colum and insert data to it in admission table.
• View all the details from the three tables into a single table.

create table admi(adno number(10)primary key,sname varchar2(10)not null,dob date not null,fname
varchar2(10)not null,phno number(10),deg varchar2(10));

create table reg(regno number(10)primary key,adno number(10)references admi(adno),deptname


varchar2(20)not null,yoj date not null);

create table mark(regno number(10)references reg(regno),sem varchar2(10)not null,m1


number(5,2)check(m1>=0 and m1<=100),m2 number(5,2)check(m2>=0 and m2<=100),m3
number(5,2)check(m3>=0 and m3<=100));

insert into admi values(&adno,'&sname','&dob','&fname',&phno,'&deg');

Enter value for adno: 2220001


Enter value for sname: karthick
Enter value for dob: 17-oct-2003
Enter value for fname: murugan
Enter value for phno: 9500061134
Enter value for deg: bsc

Enter value for adno: 2220002


Enter value for sname: harish
Enter value for dob: 09-feb-2002
Enter value for fname: muthu
Enter value for phno: 9347893523
Enter value for deg: bsc

Enter value for adno: 2220003


Enter value for sname: balaji
Enter value for dob: 08-jan-2002
Enter value for fname: gowtham
Enter value for phno: 8965749098
Enter value for deg: bsc

Enter value for adno: 2220004


Enter value for sname: sathish
Enter value for dob: 12-nov-2003
Enter value for fname: parthiban
Enter value for phno: 8935984678
Enter value for deg: bsc
Enter value for adno: 2220005
Enter value for sname: mani
Enter value for dob: 19-jun-2002
Enter value for fname: vikram
Enter value for phno: 6745900365
Enter value for deg: bsc

insert into reg values(&rno,&adno,'&deptname','&yoj');

Enter value for rno: 2222001


Enter value for adno: 2220001
Enter value for deptname: computer science
Enter value for yoj: 09-jun-2022

Enter value for rno: 2222002


Enter value for adno: 2220002
Enter value for deptname: mathematics
Enter value for yoj: 09-jun-2022

Enter value for rno: 2222003


Enter value for adno: 2220003
Enter value for deptname: physics
Enter value for yoj: 09-jun-2022

Enter value for rno: 2222004


Enter value for adno: 2220004
Enter value for deptname: biotech
Enter value for yoj: 09-jun-2022

Enter value for rno: 2222005


Enter value for adno: 2220005
Enter value for deptname: chemistry
Enter value for yoj: 09-jun-2022

insert into mark values(&regno,'&sem',&m1,&m2,&m3);

Enter value for regno: 2222001


Enter value for sem: I
Enter value for m1: 98
Enter value for m2: 97
Enter value for m3: 93

Enter value for regno: 2222002


Enter value for sem: I
Enter value for m1: 90
Enter value for m2: 80
Enter value for m3: 78
Enter value for regno: 2222003
Enter value for sem: I
Enter value for m1: 82
Enter value for m2: 59
Enter value for m3: 70

Enter value for regno: 2222004


Enter value for sem: I
Enter value for m1: 52
Enter value for m2: 67
Enter value for m3: 73

Enter value for regno: 2222005


Enter value for sem: I
Enter value for m1: 99
Enter value for m2: 45
Enter value for m3: 61

select*from admi;

ADNO SNAME DOB FNAME PHNO DEG


2220001 karthick 17-OCT-03 murugan 9500061134 Bsc
2220002 harish 09-FEB-02 muthu 9347893523 Bsc
2220003 balaji 08-JAN-02 gowtham 8965749098 Bsc
2220004 sathish 12-NOV-03 parthiban 8935984678 Bsc
2220005 mani 19-JUN-02 vikram 6745900365 Bsc

select*from reg;

REGNO ADNO DEPTNAME YOJ


2222001 2220001 computer science 09-JUN-22
2222002 2220002 mathematics 09-JUN-22
2222003 2220003 physics 09-JUN-22
2222004 2220004 biotech 09-JUN-22
2222005 2220005 chemistry 09-JUN-22

select*from mark;

REGNO SEM M1 M2 M3
2222001 I 98 97 93
2222002 I 90 80 78
2222003 I 82 59 70
2222004 I 52 67 73
2222005 I 99 45 61
select adno,regno,sname,dob,fname,phno,deg,deptname,yoj from admi inner join reg using(adno);
ADNO REGNO SNAME DOB FNAME PHNO DEG DEPTNAME YOJ
2220001 2222001 karthick 17-OCT- murugan 9500061134 bsc computer 09-JUN-
03 science 22
2220002 2222002 harish 09-FEB- muthu 9347893523 bsc mathematics 09-JUN-
02 22
2220003 2222003 balaji 08-JAN- gowtham 8965749098 bsc physics 09-JUN-
02 22
2220004 2222004 sathish 12-NOV- parthiban 8935984678 bsc biotech 09-JUN-
03 22
2220005 2222005 mani 19-JUN- vikram 6745900365 bsc chemistry 09-JUN-
02 22

select regno,sem,m1+m2+m3 as total,(m1+m2+m3)/3 as avg from mark;


REGNO SEM TOTAL AVG
2222001 I 288 96
2222002 I 248 82.6666667
2222003 I 211 70.3333333
2222004 I 192 64
2222005 I 205 68.3333333
alter table admi add aadharno number(14);
update admi set aadharno=765271813488 where adno=2220001;
update admi set aadharno=905245513088 where adno=2220002;
update admi set aadharno=252181460009 where adno=2220003;
update admi set aadharno=900245909871 where adno=2220004;
update admi set aadharno=765487660081 where adno=2220005;

select*from admi;
ADNO SNAME DOB FNAME PHNO DEG AADHARNO
2220001 karthick 17-OCT-03 murugan 9500061134 bsc 765271813488
2220002 harish 09-FEB-02 muthu 9347893523 bsc 905245513088
2220003 balaji 08-JAN-02 gowtham 8965749098 bsc 252181460009
2220004 sathish 12-NOV-03 parthiban 8935984678 bsc 900245909871
2220005 mani 19-JUN-02 vikram 6745900365 bsc 765487660081
select adno,sname,dob,fname,phno,deg,aadharno,regno,deptname,yoj,sem,m1,m2,m3,m1+m2+m3 as
total,(m1+m2+m3)/3 as avg from admi inner join reg using(adno) inner join mark using(regno);
ADNO SNAME DOB FNAME PHNO DEG AADHARNO REGNO
DEPTNAME YOJ SEM M1 M2 M3 TOTAL AVG
2220001 karthick 17-OCT-03 murugan 9500061134 Bsc 765271813488 2222001
computer 09-jun-22 I 98 97 93 288 96
science
2220002 harish 09-FEB-02 muthu 9347893523 Bsc 905245513088 2222002
mathematics 09-JUN-22 I 90 80 78 248 82.6666667
2220003 balaji 08-JAN-02 gowtham 8965749098 Bsc 252181460009 2222003
physics 09-JUN-22 I 82 59 70 211 70.3333333
2220004 sathish 12-NOV- parthiban 8935984678 Bsc 900245909871 2222004
biotech 09-JUN-22 03 52 67 73 192 64
I
2220005 mani 19-JUN-02 vikram 6745900365 Bsc 765487660081 2222005
chemistry 09-JUN-22 I 99 45 61 205 68.3333333
Ex.No:03 Demonstration of Views using employee paybill Details.

• Create table with necessary attributes and constraints.


• Insert data into the table.
• Create a view and view the data from empp table for each and every department.
• Insert data into the views that is created.
• Create views and find the DA,TA,HRA,GP,EPF,ESI,TOTDE and NPay using the data in the table.
• Using the previous view in employee table select data where department is sales.
• Using the previous view in employee table select data where department is purchase.

create table empp(eno number(5)primary key,ename varchar2(10)not null,dob date not null,dept
varchar2(15)not null,desig varchar2(15)not null);

create table sal(eno number(5)references empp(eno),bsal number(10,2)not null,lic number(10,2),loan


number(10,2));

insert into empp values(&eno,'&ename','&dob','&dept','&desig');

Enter value for eno: 101


Enter value for ename: karthick
Enter value for dob: 17-oct-2000
Enter value for dept: sales
Enter value for desig: manager

Enter value for eno: 102


Enter value for ename: harish
Enter value for dob: 23-nov-2000
Enter value for dept: sales
Enter value for desig: asst manager

Enter value for eno: 103


Enter value for ename: balaji
Enter value for dob: 19-mar-1995
Enter value for dept: sales
Enter value for desig: clerk

Enter value for eno: 104


Enter value for ename: sathish
Enter value for dob: 21-apr-2000
Enter value for dept: purchase
Enter value for desig: manager

Enter value for eno: 105


Enter value for ename: mani
Enter value for dob: 08-sep-1999
Enter value for dept: purchase
Enter value for desig: asst manager
Enter value for eno: 106
Enter value for ename: santhosh
Enter value for dob: 05-oct-1995
Enter value for dept: purchase
Enter value for desig: clerk
insert into sal values(&eno,&bsal,&lic,&loan);

Enter value for eno: 101


Enter value for bsal: 65000
Enter value for lic: 1000
Enter value for loan: 0

Enter value for eno: 102


Enter value for bsal: 49000
Enter value for lic: 1500
Enter value for loan: 1000

Enter value for eno: 103


Enter value for bsal: 25000
Enter value for lic: 200
Enter value for loan: 1000

Enter value for eno: 104


Enter value for bsal: 66000
Enter value for lic: 2000
Enter value for loan: 0

Enter value for eno: 105


Enter value for bsal: 38000
Enter value for lic: 1000
Enter value for loan: 0

Enter value for eno: 106


Enter value for bsal: 26000
Enter value for lic: 0
Enter value for loan: 0

create view salx as select*from sal;

select*from salx;

ENO BSAL LIC LOAN


101 65000 1000 0
102 49000 1500 1000
103 25000 200 1000
104 66000 2000 0
105 38000 1000 0
106 26000 0 0
create view emppsal as select*from empp where dept='sales';
select*from emppsal;
ENO ENAME DOB DEPT DESIG
101 karthick 17-OCT-00 sales manager
102 harish 23-NOV-00 sales asst manager
103 balaji 19-MAR-95 sales clerk

create view empppurchase as select*from empp where dept='purchase';


select*from empppurchase;
ENO ENAME DOB DEPT DESIG
104 sathish 21-APR-00 purchase manager
105 mani 08-SEP-99 purchase asst manager
106 santhosh 05-OCT-95 purchase clerk

insert into emppsal values(107,'jayanath','20-dec-1997','sales','poen');


select*from emppsal;
ENO ENAME DOB DEPT DESIG
101 karthick 17-OCT-00 sales manager
102 harish 23-NOV-00 sales asst manager
103 balaji 19-MAR-95 sales clerk
107 jayanath 20-DEC-97 sales poen

insert into empppurchase values(108,'divakar','17-mar-1998','purchase','poen');


select*from empppurchase;
ENO ENAME DOB DEPT DESIG
104 sathish 21-APR-00 purchase manager
105 mani 08-SEP-99 purchase asst manager
106 santhosh 05-OCT-95 purchase clerk
108 divakar 17-MAR-98 purchase poen

insert into salxvalues(107,18000,200,1000);

insert into salxvalues(108,18000,0,2000);

select*from salx;

ENO BSAL LIC LOAN


101 65000 1000 0
102 49000 1500 1000
103 25000 200 1000
104 66000 2000 0
105 38000 1000 0
106 26000 0 0
107 18000 200 1000
108 18000 0 2000
create view emppsal1 as select empp.eno,ename,dob,dept,desig,bsal,bsal*30/100 as da,bsal*10/100 as
ta,bsal*20/100 as hra,bsal*12/100 as epf,bsal*1.75/100 as esi from empp,sal where empp.eno=sal.eno;

select*from emppsal1;
ENO ENAME DOB DEPT DESIG BSAL DA TA
HRA EPF ESI
101 karthick 17-OCT-00 sales manager 65000 19500 6500
13000 7800 1137.5
102 harish 23-NOV-00 sales Asst 49000 14700 4900
9800 5880 857.5 manager
103 balaji 19-MAR-95 sales clerk 25000 7500 2500
5000 3000 537.5
104 sathish 21-APR-00 purchase manager 66000 19800 6600
13200 7920 1155
105 mani 08-SEP-99 purchase asst 38000 11400 3800
7600 4560 665 manager
106 santhosh 05-OCT-95 purchase clerk 26000 7800 2600
5200 3120 455
107 jayanath 20-DEC-97 sales poen 18000 5400 1800
3600 2160 315
108 divakar 17-MAR-98 purchase poen 18000 5400 1800
3600 2160 315

create view emppsal2 as


selectemppsal1.eno,ename,dob,dept,desig,emppsal1.bsal,da,ta,hra,emppsal1.bsal+da+ta+hra as
gp,loan,lic,epf,esi,loan+lic+esi+epf as totde from emppsal1,sal where emppsal1.eno=sal.eno;

select*from emppsal2;
ENO ENAME DOB DEPT DESIG BSAL DA TA
HRA GP LOAN LIC EPF ESI TOTDE
101 karthick 17-OCT-00 sales manager 65000 19500 6500
13000 10400 0 1000 7800 1137.5 9937.5
102 harish 23-NOV-00 sales asst 49000 14700 4900
9800 78400 1000 1500 manager 857.5 9237.5
5880
103 Balaji 19-MAR-95 sales clerk 25000 7500 2500
5000 40000 1000 200 3000 537.5 4637.5
104 sathish 21-APR-00 purchase manager 66000 19800 6600
13200 105600 0 2000 7920 1155 11075
105 mani 08-SEP-99 purchase asst 38000 11400 3800
7600 60800 0 1000 manager 665 6225
4560
106 santhosh 05-OCT-95 purchase clerk 26000 7800 2600
5200 41600 0 0 3120 455 3575
107 jayanath 20-DEC-97 sales poen 18000 5400 1800
3600 28800 1000 200 2160 315 3675
108 divakar 17-MAR-98 purchase poen 18000 5400 1800
3600 28800 2000 0 2160 315 4475
create view emppsal3 as select emppsal2.eno,ename,dob,dept,desig,bsal,da,ta,hra,gp,loan,lic,epf,esi,totde,gp-
totde as ntpay from emppsal2;

select*from emppsal3;
ENO ENAME DOB DEPT DESIG BSAL DA TA
HRA GP LOAN LIC EPF ESI TOTDE NTPAY
101 karthick 17-OCT-00 sales manager 65000 19500 6500
13000 10400 0 1000 7800 1137.5 9937.5 94062.5

102 harish 23-NOV-00 sales asst 49000 14700 4900


9800 78400 1000 1500 manager 857.5 9237.5 69162.5
5880
103 Balaji 19-MAR-95 sales clerk 25000 7500 2500
5000 40000 1000 200 3000 537.5 4637.5 35362.5

104 sathish 21-APR-00 purchase manager 66000 19800 6600


13200 105600 0 2000 7920 1155 11075 94525
105 mani 08-SEP-99 purchase asst 38000 11400 3800
7600 60800 0 1000 manager 665 6225 54575
4560
106 santhosh 05-OCT-95 purchase clerk 26000 7800 2600
5200 41600 0 0 3120 455 3575 38025

107 jayanath 20-DEC-97 sales poen 18000 5400 1800


3600 28800 1000 200 2160 315 3675 25125

108 divakar 17-MAR-98 purchase poen 18000 5400 1800


3600 28800 2000 0 2160 315 4475 24325

create view emppsales1 as select*from emppsal3 where dept='sales';

select*from emppsales1;

ENO ENAME DOB DEPT DESIG BSAL DA TA


HRA GP LOAN LIC EPF ESI TOTDE NTPAY
101 karthick 17-OCT-00 sales manager 65000 19500 6500
13000 10400 0 1000 7800 1137.5 9937.5 94062.5

102 harish 23-NOV-00 sales asst 49000 14700 4900


9800 78400 1000 1500 manager 857.5 9237.5 69162.5
5880
103 Balaji 19-MAR-95 sales clerk 25000 7500 2500
5000 40000 1000 200 3000 537.5 4637.5 35362.5

107 jayanath 20-DEC-97 sales poen 18000 5400 1800


3600 28800 1000 200 2160 315 3675 25125

create view empppurchase1 as select*from emppsal3 where dept='purchase';


select*from empppurchase1;

ENO ENAME DOB DEPT DESIG BSAL DA TA


HRA GP LOAN LIC EPF ESI TOTDE NTPAY
104 sathish 21-APR-00 purchase manager 66000 19800 6600
13200 105600 0 2000 7920 1155 11075 94525
105 mani 08-SEP-99 purchase asst 38000 11400 3800
7600 60800 0 1000 manager 665 6225 54575
4560
106 santhosh 05-OCT-95 purchase clerk 26000 7800 2600
5200 41600 0 0 3120 455 3575 38025

108 divakar 17-MAR-98 purchase poen 18000 5400 1800


3600 28800 2000 0 2160 315 4475 24325
Ex.No:04 Display highest salary in employee(Top 5 only) using PL/SQL.

• Create a table with necessary constraints.


• Insert data into the table.
• View the table.
• Create a cursor to display the top five salary records.

create table emp(eno number(5)primary key,ename varchar2(10)not null,dob date not null,bsal number(10,2));

insert into emp values(&eno,'&ename','&dob',&bsal);

Enter value for eno: 501


Enter value for ename: karthick
Enter value for dob: 17-oct-2000
Enter value for bsal: 50000

Enter value for eno: 502


Enter value for ename: harish
Enter value for dob: 29-jun-2001
Enter value for bsal: 46000

Enter value for eno: 503


Enter value for ename: balaji
Enter value for dob: 19-nov-2001
Enter value for bsal: 43000

Enter value for eno: 504


Enter value for ename: sathish
Enter value for dob: 12-mar-2000
Enter value for bsal: 36000

Enter value for eno: 505


Enter value for ename: mani
Enter value for dob: 09-nov-2001
Enter value for bsal: 28000

select*from emp;

ENO ENAME DOB BSAL


501 karthick 17-OCT-00 50000
502 harish 29-JUN-01 46000
503 balaji 19-NOV-01 43000
504 sathish 12-MAR-00 36000
505 mani 09-NOV-01 28000
506 jayanath 11-NOV-01 48000
507 santhosh 18-JUN-99 38000
edit emp.sql;
set serveroutput on
declare
i number;
cursor empx is select*from emp order by bsaldesc;
myrowsystem.emp%rowtype;
begin
open empx;
dbms_output.put_line('--------------------------------------------');
dbms_output.put_line(' '||lpad('eno',5)||' '||lpad('ename',10)||' '||lpad('dob',14)||' '||lpad('bsal',8)||'');
dbms_output.put_line('--------------------------------------------');
i:=0;
loop
fetch empx into myrow;
exit when empx%notfound;
if(i<5) then
dbms_output.put_line(' '||lpad(myrow.eno,5)||' '||lpad(myrow.ename,10)||' '||lpad(myrow.dob,14)||'
'||lpad(myrow.bsal,8)||' ');
i:=i+1;
else
exit;
end if;
end loop;
close empx;
end;
/
set serveroutput off

@emp.sql;

ENO ENAME DOB BSAL


501 karthick 17-OCT-00 50000
506 jayanath 11-NOV-01 48000
502 harish 29-JUN-01 46000
503 balaji 19-NOV-01 43000
507 santhos 18-JUN-99 38000

PL/SQL procedure successfully completed.


Ex.No:05 Demonstration of procedure and function.

• Create a table with necessary constraints.


• Insert data into the table.
• View the table.
• Create a cursor.
• Execute the procedure.

create table empl(eno number(5)primary key,ename varchar2(15)not null,dept varchar2(15)not null,desig


varchar2(15)not null,sal number(10,2)check(sal>=10000 and sal<=150000));

insert into empl values(&eno,'&ename','&dept','&desig',&sal);

Enter value for eno: 101


Enter value for ename: karthick
Enter value for dept: purchase
Enter value for desig: manager
Enter value for sal: 100000

Enter value for eno: 102


Enter value for ename: harish
Enter value for dept: sales
Enter value for desig: asst manager
Enter value for sal: 80000

Enter value for eno: 103


Enter value for ename: balaji
Enter value for dept: purchase
Enter value for desig: clerk
Enter value for sal: 28000

Enter value for eno: 104


Enter value for ename: sathish
Enter value for dept: sales
Enter value for desig: manager
Enter value for sal: 102000

select*from empl;

ENO ENAME DEPT DESIG SAL


101 Karthick purchase manager 100000
102 Harish sales asst manager 80000
103 Balaji purchase clerk 28000
104 Sathish sales manager 102000
105 Mani purchase Asst manager 68000
edit empl.sql;

create or replace procedure myprocedure (eid in number) is


begin
update empl set sal=sal+sal*10/100 where eno=eid;
end;
/
@empl.sql

execute myprocedure(103);

PL/SQL procedure successfully completed.

select*from empl;
ENO ENAME DEPT DESIG SAL
101 Karthick purchase manager 100000
102 Harish sales asst manager 80000
103 Balaji purchase clerk 30800
104 Sathish sales manager 102000

edit myfact.sql;
create or replace function fact(n in number) return number is
i number;
f number:=1;
begin
for i in 1..n
loop
f:=f*i;
end loop;
return(f);
end;
/
SQL> @myfact.sql
Function created.

SQL> select fact(5) from dual;

FACT(5)
----------
120
Ex.No:07 Create emplog table using Triggers

• Create a table with necessary attributes and constraints.


• Insert data into the table.
• View the table.
• Create a cursor to using trigger.
• Display the cursor to view the output.

create table empp(eno number(5)primary key,ename varchar2(15)not null,sal number(10,2));

create table emplog(eno number(5),oldsal number(10,2),newsal number(10,2),username


varchar2(15),systemdate varchar2(20));

insert into empp values(&eno,'&ename',&sal);

Enter value for eno: 101


Enter value for ename: karthick
Enter value for sal: 45000

Enter value for eno: 102


Enter value for ename: harish
Enter value for sal: 40000

Enter value for eno: 103


Enter value for ename: balaji
Enter value for sal: 38000

Enter value for eno: 104


Enter value for ename: sathish
Enter value for sal: 32000

Enter value for eno: 105


Enter value for ename: mani
Enter value for sal: 25000

select*from empp;

ENO ENAME SAL


101 karthick 45000
102 harish 40000
103 balaji 38000
104 sathish 32000
105 mani 25000
edit emplog.sql;

create or replace trigger mytrigger before update of sal on empp for each row
begin
insert into emplog values(:old.eno,:old.sal,:new.sal,user,sysdate);
end;
/

@emplog.sql;
Trigger created.

update empp set sal=55000 where eno=101;


update empp set sal=42000 where eno=103;
update empp set sal=30000 where eno=105;

select*from emplog;

ENO OLDSAL NEWSAL USERNAME SYSTEMDATE


101 45000 55000 SYSTEM 01-NOV-22
103 42000 42000 SYSTEM 01-NOV-22
105 25000 30000 SYSTEM 01-NOV-22
Ex.N0:08 PL/SQL program to display employee details using cursor.

• Create a table with necessary constraints.


• Insert data into the table.
• Crerate a cursor to display the output.

create table emp(eid number(5)primary key,ename varchar2(15)not null,dob date not null,doj date not
null,dept varchar2(15)not null,desig varchar2(15)not null,sal number(10,2));

insert into emp values(&eid,'&ename','&dob','&doj','&dept','&desig',&sal);


Enter value for eid: 501
Enter value for ename: karthick
Enter value for dob: 17-oct-1990
Enter value for doj: 06-may-2016
Enter value for dept: research
Enter value for desig: manager
Enter value for sal: 50000

Enter value for eid: 502


Enter value for ename: harish
Enter value for dob: 12-nov-1997
Enter value for doj: 12-feb-2018
Enter value for dept: sales
Enter value for desig: manager
Enter value for sal: 50000

Enter value for eid: 503


Enter value for ename: balaji
Enter value for dob: 08-aug-2000
Enter value for doj: 27-mar-2020
Enter value for dept: research
Enter value for desig: asst manager
Enter value for sal: 40000

Enter value for eid: 504


Enter value for ename: sathish
Enter value for dob: 20-jun-1998
Enter value for doj: 08-aug-2021
Enter value for dept: sales
Enter value for desig: asst manager
Enter value for sal: 38000

Enter value for eid: 505


Enter value for ename: mani
Enter value for dob: 23-oct-2000
Enter value for doj: 12-feb-2022
Enter value for dept: sales
Enter value for desig: clerk
Enter value for sal: 25000

select*from emp;

EID ENAME DOB DOJ DEPT DESIG SAL


501 Karthick 17-OCT-90 06-MAY-16 research manager 50000
502 harish 12-NOV-97 12-FEB-18 sales manager 50000
503 balaji 08-AUG-00 27-MAR-20 research asstmanager 40000
504 sathish 20-JUN-98 08-AUG-21 sales asstmanager 38000
505 mani 23-OCT-00 12-FEB-22 sales clerk 25000

edit emp.sq;

set serveroutput on
declare
cursor empx is select*from emp;
myrowsystem.emp%rowtype;
begin
open empx;
dbms_output.put_line('-----------------------------------------------------------------------------------------');
dbms_output.put_line(' '||lpad('eid',11)||' '||lpad('ename',14)||' '||lpad('dob',14)||' '||lpad('doj',13)||'
'||lpad('dept',11)||' '||lpad('Desig',14)||' '||lpad('sal',7)||' ');
dbms_output.put_line('-----------------------------------------------------------------------------------------');
loop
fetch empx into myrow;
exit when empx%notfound;
dbms_output.put_line(' '||lpad(myrow.eid,11)||' '||lpad(myrow.ename,14)||' '||lpad(myrow.dob,14)||'
'||lpad(myrow.doj,13)||' '||lpad(myrow.dept,11)||' '||lpad(myrow.desig,14)||' '||lpad(myrow.sal,7)||' ');
end loop;
close empx;
end;
/
set serveroutput off

@emp.sql;

EID ENAME DOB DOJ DEPT DESIG SAL


501 karthick 17-OCT-90 06-MAY-16 research manager 50000
502 harish 12-NOV-97 12-FEB-18 sales manager 50000
503 balaji 08-AUG-00 27-MAR-20 research asstmanager 40000
504 sathish 20-JUN-98 08-AUG-21 sales asstmanager 38000
505 mani 23-OCT-00 12-FEB-22 sales clerk 25000

PL/SQL procedure successfully completed.


Ex.N0:09 PL/SQL program to display Student marks details using cursor.

• Create a table with necessary constraints.


• Insert data into the table.
• View the table student.
• Create a cursor to find the total,average and class of the student and display it.
• Execute the cursor to view the output.

create table stud(regno number(5)primary key,sname varchar2(15)not null,dob date not null,m1
number(10,2)check(m1>=0 and m1<=100),m2 number(10,2)check(m2>=0 and m2<=100),m3
number(10,2)check(m3>=0 and m3<=100));

Enter value for regno: 101


Enter value for sname: karthick
Enter value for dob: 17-oct-2003
Enter value for m1: 99
Enter value for m2: 92.34
Enter value for m3: 89

Enter value for regno: 102


Enter value for sname: harish
Enter value for dob: 19-sep-2002
Enter value for m1: 78
Enter value for m2: 98
Enter value for m3: 56

Enter value for regno: 103


Enter value for sname: balaji
Enter value for dob: 19-nov-2002
Enter value for m1: 78
Enter value for m2: 90
Enter value for m3: 87

Enter value for regno: 104


Enter value for sname: sathish
Enter value for dob: 05-mar-2002
Enter value for m1: 87
Enter value for m2: 65
Enter value for m3: 46

Enter value for regno: 105


Enter value for sname: mani
Enter value for dob: 12-nov-2003
Enter value for m1: 97
Enter value for m2: 70
Enter value for m3: 67
select*from stud;

REGNO SNAME DOB M1 M2 M3


101 karthick 17-OCT-03 99 92.34 89
102 harish 19-SEP-02 78 98 56
103 balaji 19-NOV-02 78 90 87
104 santhosh 05-MAR-02 87 65 46
105 mani 12-NOV-03 97 70 67

edit studmark.sql;

set serveroutput on
declare
total number(10,2);
average number(5,2);
result varchar2(10);
class varchar2(10);
cursor mark is select*from stud;
myrowsystem.stud%rowtype;
begin
open mark;
dbms_output.put_line('-----------------------------------------------------------------------------------------');
dbms_output.put_line(lpad('regno',5)||' '||lpad('sname',10)||' '||lpad('dob',13)||' '||lpad('m1',6)||'
'||lpad('m2',5)||' '||lpad('m3',6)||' '||lpad('total',8)||' '||lpad('average',6)||' '||lpad('result',6)||'
'||lpad('class',7));
dbms_output.put_line('-----------------------------------------------------------------------------------------');
loop
fetch mark into myrow;
exit when mark%notfound;
total:=myrow.m1+myrow.m2+myrow.m3;
average:=total/4;
if myrow.m1>35 and myrow.m2>35 and myrow.m3>35 then
result:='pass';
else
result:='fail';
end if;
if result='pass' then
if average>=60 then
class:='first';
elsif average>=50 then
class:='second';
elsif average>=35 then
class:='third';
end if;
else
class:='no';
end if;
dbms_output.put_line(lpad(myrow.regno,5)||' '||lpad(myrow.sname,15)||' '||lpad(myrow.dob,10)||'
'||lpad(myrow.m1,6)||' '||lpad(myrow.m2,6)||' '||lpad(myrow.m3,6)||' '||lpad(total,8)||' '||lpad(average,6)||'
'||lpad(result,5)||' '||lpad(class,7));
end loop;
close mark;
end;
/
set serveroutputoff
@studmark.sql;

regno Sname Dob m1 m2 m3 total average result class


101 Karthick 17-OCT- 99 92.34 89 280.34 70.09 pass first
03
102 Harish 19-SEP- 78 98 56 232 58 pass second
02
103 Balaji 19-NOV- 78 90 87 255 63.75 pass first
02
104 santhosh 05- 87 65 46 198 49.5 Pass third
MAR-02
105 Mani 12-NOV- 97 70 67 234 58.5 Pass second
03

PL/SQL procedure successfully completed.


Ex.10 PL/SQL program to display Employee Paybill details using cursor.

• Create table with necessary constraints.


• Insert data into the table.
• View the table data.
• Creating a cursor to calculate the Dearness Allowance(DA),Travel Allowance(TA),House Rent
Allowance(HRA),Gross Pay(GP),Employee Provident Fund(EPF),Employee State Insurance(ESI),Total
Detection(TotDe),Net Pay(NPay) for each and every employee.
• Execute the cursor to view the output.

create table paybill(eno number(5)primary key,ename varchar2(15)not null,desig varchar2(15)not null,basicpay


number(10,2)not null,lic number(10,2)not null,loan number(10,2)not null);

insert into paybill values(&eno,'&ename','&desig',&basicpay,&lic,&loan);


Enter value for eno: 101
Enter value for ename: karthick
Enter value for desig: manager
Enter value for basicpay: 50000
Enter value for lic: 1000
Enter value for loan: 1700

Enter value for eno: 102


Enter value for ename: balaji
Enter value for desig: asst manager
Enter value for basicpay: 42000
Enter value for lic: 1500
Enter value for loan: 1200

Enter value for eno: 103


Enter value for ename: harish
Enter value for desig: salesman
Enter value for basicpay: 30000
Enter value for lic: 1000
Enter value for loan: 1800

Enter value for eno: 104


Enter value for ename: sathish
Enter value for desig: clerk
Enter value for basicpay: 25000
Enter value for lic: 800
Enter value for loan: 1200

Enter value for eno: 105


Enter value for ename: mani
Enter value for desig: secratery
Enter value for basicpay: 18000
Enter value for lic: 1000
Enter value for loan: 900
select*from paybill;
ENO ENAME DESIG BASICPAY LIC LOAN
101 karthick manager 50000 1000 1700
102 balaji asst manger 42000 1500 1200
103 harish salesman 30000 1000 1800
104 sathish clerk 25000 800 1200
105 mani secratery 18000 1000 900
edit paybill.sql;
set serveroutput on
declare
cursor pbill is select*from paybill;
myrowsystem.paybill%rowtype;
da number(10,2);
ta number(10,2);
gpnumber(10,2);
hranumber(10,2);
epfnumber(10,2);
esinumber(10,2);
totdenumber(10,2);
netpaynumber(10,2);
begin
open pbill;
dbms_output.put_line('-----------------------------------------------------------------------------------------');
dbms_output.put_line(' '||lpad('eno',4)||' '||lpad('basicpay',9)||' '||lpad('da',6)||' '||lpad('ta',6)||'
'||lpad('hra',7)||' '||lpad('gp',7)||' '||lpad('epf',6)||' '||lpad('esi',6)||' '||lpad('lic',6)||' '||lpad('loan',6)||'
'||lpad('totde',6)||' '||lpad('netpay',7)||' ');
dbms_output.put_line('-----------------------------------------------------------------------------------------');
loop
fetch pbill into myrow;
exit when pbill%notfound;
da:=myrow.basicpay*40/100;
ta:=myrow.basicpay*2/100;
hra:=myrow.basicpay*10/100;
gp:=myrow.basicpay+da+hra+ta;
epf:=myrow.basicpay*8.5/100;
esi:=myrow.basicpay*1.5/100;
totde:=epf+esi+myrow.lic+myrow.loan;
netpay:=gp-totde;
dbms_output.put_line(' '||lpad(myrow.eno,4)||' '||' '||lpad(myrow.basicpay,9)||' '||lpad(da,6)||'
'||lpad(ta,6)||' '||lpad(hra,6)||' '||lpad(gp,7)||' '||lpad(epf,6)||' '||lpad(esi,6)||' '||lpad(myrow.lic,6)||'
'||lpad(myrow.loan,6)||' '||lpad(totde,6)||' '||lpad(netpay,7)||' ');
end loop;
close pbill;
end;
/
set serveroutput off
@paybill.sql;

eno basicpay Da ta hra gp epf esi lic loan totde Netpay


101 50000 20000 1000 5000 76000 4250 750 1000 1700 7700 68300
102 42000 16800 840 4200 63840 3570 630 1500 1200 6900 56940
103 30000 12000 600 3000 45600 2550 450 1000 1800 5800 39800
104 25000 10000 500 2500 38000 2125 375 800 1200 4500 33500
105 18000 7200 360 1800 27360 1530 270 1000 900 3700 23660

PL/SQL procedure successfully completed.


Ex.6 Create package for employee details

• Create table with necessary constraints.


• Insert data into the table.
• View the table data.
• Create package specification with only declaration of my_insert,my_update and my_delete procedures
• Create package body with definition of my_insert,my_update and my_delete procudures
• Execute the procedure with package name
.
create table emp3(eno number(5)primary key,ename varchar2(15));

insert into emp3 values(&eno,'&ename');

Enter value for eno: 101


Enter value for ename: karthick

Enter value for eno: 102


Enter value for ename: harish

Enter value for eno: 103


Enter value for ename: balaji

Enter value for eno: 104


Enter value for ename: sathish

Enter value for eno: 105


Enter value for ename: mani

select*from emp3;

ENO ENAME
101 karthick
102 harish
103 balaji
104 sathish
105 mani

edit mypackspe.sql;

CREATE or replace PACKAGE my_pack1 AS -- specification


PROCEDURE my_insert(Empno NUMBER,ename VARCHAR2);
PROCEDURE my_update(Empno NUMBER,name VARCHAR2);
PROCEDURE my_delete(Empno NUMBER);
END my_pack1;
/
@mypackspe.sql;
Package created.
edit mypackbody.sql;

CREATE or replace PACKAGE BODY my_pack1 AS -- body


PROCEDURE my_insert(Empno NUMBER,ename VARCHAR2) IS
BEGIN
INSERT INTO emp3 VALUES (empno,ename);
END my_insert;
PROCEDURE my_update(Empno NUMBER,name VARCHAR2) IS
BEGIN
Update emp3 set ename=name where eno=empno;
END my_update;
PROCEDURE my_delete(Empno NUMBER) IS
BEGIN
Delete from emp3 where eno=empno;
END my_delete;
END my_pack1;
/
@mypackbody.sql;

Package body created.


Calling the procedure:
Execute my_pack1.my_insert(106,’Raja’);
Execute my_pack1.my_update(101,’muthu’)
select*from emp3;

ENO ENAME
101 muthu
102 harish
103 balaji
104 sathish
105 Mani
106 Raja

You might also like