PL/SQL Programs

 

 

 

1. SWAP TWO NUMBERS














declare
a number(10);
b number(10);
c number(10);
begin
a:=&a;
b:=&b;
dbms_output.put_line('before');
dbms_output.put_line(a);
dbms_output.put_line(b);
c:=a;
a:=b;
b:=c;
dbms_output.put_line('after');
dbms_output.put_line(a);
dbms_output.put_line(b);
end;
/

 

2. SWAP TWO NUMBERS WITHOUT USING A THIRD VARIABLE











declare
a number(10);
b number(10);
begin
a:=&a;
b:=&b;
dbms_output.put_line('before');
dbms_output.put_line(a);
dbms_output.put_line(b);
a:=a+b;
b:=a-b;
a:=a-b;
dbms_output.put_line('after');
dbms_output.put_line(a);
dbms_output.put_line(b);
end;
/

 

3. LARGEST OF TWO NUMBERS







declare
a number(10);
b number(10);
begin
a:=&a;
b:=&b;
if a=b then
dbms_output.put_line('same');
elsif a>b then
dbms_output.put_line('greater is '||a);
else
dbms_output.put_line('greater is '||b);
end  if;
end;
/

 

4. CHECK WHETHER NUMBER IS ARMSTRONG










declare
a number(10);
b number(10);
s number(10);
t number(10);
begin
a:=&a;
s:=0;
t:=a;
while a>0
loop
b:=mod(a,10);
s:=s+(power(b,3));
a:=trunc(a/10);
end loop;
if s=t then
dbms_output.put_line('The number is Armstrong');
else
dbms_output.put_line('The number is not Armstrong');
end if;
end;
/

 

5. FACTORIAL OF A NUMBER







declare
a number(10);
b number(10);
i number(10);
begin
a:=&a;
b:=1;
for i in 1..a
loop
b:=b*i;
end loop;
dbms_output.put_line('Factorial is '||b);
end;
/

 

6. SUM OF DIGITS






declare
a number(10);
b number(10);
s number(10);
begin
a:=&a;
s:=0;
while a>0
loop
b:=mod(a,10);
s:=s+b;
a:=trunc(a,10);
end loop;
dbms_output.put_line('Sum of digits is '||s);
end;
/

 

7. FIBONACCI SERIES







declare
a number(10);
b number(10);
c number(10);
d number(10);
i number(10);
begin
a:=&a;
b:=0;
c:=1;
dbms_output.put_line('Fibonacci series is');
dbms_output.put_line(b);
dbms_output.put_line(c);
for i in 3..a
loop
d:=b+c;
dbms_output.put_line(d);
b:=c;
c:=d;
end loop;
end;
/

 

8. CHECK WHETHER A NUMBER IS PRIME










declare
a number(10);
b number(10);
i number(10);
c number(10);
begin
a:=&a;
if a=1 then
dbms_output.put_line('The number is neither prime nor composite');
elsif a=2 then
dbms_output.put_line('The number is prime');
elsif a>2 then
for i in 2..(a-1)
loop
b:=mod(a,i);
if b=0 then
c:=1;
end if;
end loop;
if c=1 then
dbms_output.put_line('The number is not prime');
else
dbms_output.put_line('The number is prime');
end if;
end if;
end;
/

 

9. DISPLAY PRIME NUMBER UPTO GIVEN NUMBER










declare
f number(10);
i number(10);
i number(10);
g number(10);
n number(10);
j number(10);
begin
n:=&n;
f:=0;
dbms_output.put_line('Prime numbers:');
for i in 2..n
loop
for j in 2..(i-1)
loop
g:=mod(i,j);
if g=0 then
f:=f+1;
end if;
end loop;
if f=0 then
dbms_output.put_line(i);
end if;
f:=0;
end loop;
end;
/

 

10. LARGEST OF THREE NUMBERS









declare
a number(10);
b number(10);
c number(10);
begin
a:=&a;
b:=&b;
c:=&c;
if a>b and a>c then
dbms_output.put_line('Largest is '||a);
elsif c>a and c>b then
dbms_output.put_line('Largest is '||c);
elsif b>a and b>c then
dbms_output.put_line('Largest is '||b);
end if;
end;
/

 

11. CUBE OF A NUMBER (USING FUNCTION)









create or replace from cube(n in number)
return number
IS
c number(5);
begin
c:=n*n*n;
return c;
end;
declare
n number(5);
c number(5);
begin
n:=&n;
c:=cube(n);
dbms_output.put_line('Cube = '||c);
end;
/

 

12. FIND TOTAL MARKS (USING FUNCTION)









create or replace function mark(n1 in number, n2 in number, n3 in number)
return number
IS
c number(5);
begin
c=n1+n2+n3;
return c;
end;
declare
n1 number(5);
n2 number(5);
n3 number(5);
c number(5);
begin
n1:=&n1;
n2:=&n2;
n3:=&n3;
c:=mark(n1,n2,n3);
dbms_output.put_line('Total = '||c);
end;
/

 

13. FACTORIAL OF A NUMBER (USING FUNCTION)

 

 

 

 

 

 

 

FUNCTION

create or replace function factfn(n in number)
return number
is
f number(5);
i number(5);
begin
f:=1;
for i in 1..n
loop
f:=f*i;
end loop;
return f;
end;
/

MAIN PROGRAM

declare
n number(5);
f number(5);
i number(5);
begin
n:=&n;
f:=factfn(n);
dbms_output.put_line('Factorial is'||f);
end;
/

 

14. BANK TRANSACTION (USING FUNCTION)

 

 

 

 

 

 

 

FUNCTION 1

create or replace function func1(req in number, bal in number)
return  number is bala number(10);
begin
bala:=bala-req;
return bala;
end;
/

FUNCTION 2

create or replace function func2(req in number, bal in number)
return  number is bala number(10);
begin
bala:=bala+req;
return bala;
end;
/

MAIN PROGRAM

declare
req number(10);
bal1 number(10);
bal2 number(10);
bala number(10);
accno1 number(10);
accno2 number(10);
s1 number(10);
s2 number(10);
begin
accno1:=&accno1;
accno2:=&accno2;
req:=&req;
select bal into bal1 from acc1 where accno=accno1;
select bal into bal2 from acc1 where accno=accno2;
s1:=func1(req,bal1);
s2:=func2(req,bal2);
update acc1 set bal=s1 where accno=accno1;
update acc1 set bal=s2 where accno=accno2;
end;
/

 

15. INTERNAL MARK CALCULATION (USING PROCEDURE)

 

 

 

 

 

 

 

PROCEDURE

create or replace procedure average(m1 in number, m2 in number, A out number)
IS
begin
A:=(m1+m2)/2;
end;
/

MAIN PROGRAM

declare
m1 number(5);
m2 number(5);
assignment1 number(5);
assignment2 number(5);
attendance number(5);
total number(5);
begin
m1:=&m1;
m2:=&m2;
assignment1:=&assignment1;
assignment2:=&assignment2;
attendance:=&attendance;
average(m1, m2, A);
total:=A;
if attendance>75 then
total:=total+10;
else
total:=total+(attendance*0.1);
end if;
average(assignment1, assignment2, A);
total:=total+A;
dbms_output.put_line('Internal = '||total);
end;
/

 

16. UPDATE PHONE NUMBER OF A PERSON (USING PROCEDURE). CREATE A TABLE 'address' WITH FIELDS 'serialno', 'name', 'address', 'phoneno'

 

 

 

 

 

 

 

 

 

 

 

 

CREATING TABLE

create table address(serialno number(5), name varchar(15), address varchar(50), phoneno(10));

PROCEDURE

create or replace procedure add(name in varchar, phoneno in number)
IS
begin
update address set phoneno=phoneno where name=name;
end;
/

MAIN PROGRAM

declare
name variable(15);
phoneno number(10);
begin
name:=&name;
phoneno:=&phoneno;
add(name phoneno);
end;
/

 

17. BANK TRANSACTION (USING PROCEDURE)

 

 

 

 

 

 

CREATING TABLE

create table acc(accno number(10), name varchar(15), bal number(10));
insert into acc values(1234, ‘John’, 80000);
insert into acc values(1567, ‘Name’, 10000);

PROCEDURE

create or replace procedure accproc(ids in number, s in number)
is begin
update acc set bal=s where accno=ids;
end;
/

MAIN PROGRAM

declare
b number(10);
a1 number(10);
a2 number(10);
b1 number(10);
b2 number(10);
t1 number(10);
t2 number(10);
begin
a1:=&a1;
a2:=&a2;
b:=&b;
select bal into b1 from acc where accno=a1;
select bal into b2 from acc where accno=a2;
if b<b1 then
t1:=b1-b;
t2:=b2+b;
accproc(a1,t1);
accproc(a2,t2);
dbms_outut.put_line(‘Can process’);
else
dbms_outut.put_line(‘Cant process’);
end if;
end;
/

 

18. PROGRAM FOR NOT ALLOWING INSERTION INTO TABLE ON SATURDAY AND SUNDAY (USIING TRIGGER)


 

 

 

 

 

 

 

 

 

 

 

CREATING TABLE


create table student(rollno number(2), name varchar(10), age number(2), address(15));

 MAIN PROGRAM


create or replace trigger tr before insert on student for each row
declare

temp varchar(5);

begin
temp:=TO_CHAR(sysdate,’DY’);
if temp=’SAT’ or temp=’SUN’ then
RAISE_APPLICATION_ERROR(‘-20002’,’TRANSACTION NOT ALLOWED’);
Else
dbms_output.put_line(‘Transaction allowed’);
end if;
end;

/ 


 19. PROGRAM FOR SHOWING TABLE UPDATE DATE (USING TRIGGER)


 

 

CREATING TABLE

create table student(rollno number(2), name varchar(15), age number(2));
insert into student values(40, ‘NAME’, 21);

MAIN PROGRAM


create or replace trigger tr2 after insert on student for each row

declare
temp varchar(5);
begin
temp:=to_char(sysdate,’DY’);
dbms_output.put_line(‘Record updated on’||temp);
temp:=to_char(sysdate,’DD-MM-YY’);
dbms_output.put_line(‘Date: ’||temp);
end;
/
 

20. PROGRAM TO GET EMPLOYEE NAME, OLD SALARY AND 10% INCREMENT SALARY (USING CURSOR). CREATE TABLE 'employee' WITH FIELDS 'id', 'name', 'salary'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CREATING TABLE

create table employee (id number(10), name varchar(30), salary number(10));

MAIN PROGRAM

declare
n employee.name%type;
s1 employee.salary%type;
s2 employee.salary%type;
cursor cr2 is select name, salary from employee;
cursor cr3 is select salary from employee;
begin
dbms_output.put_line('name'||' '||'old salary'||' '||'new salary');
open cr2;
update employee set salary=salary+(salary*0.1);
open cr3;
loop
fetch cr2 into n,s1;
fetch cr3 into s2;
dbms_output.put_line(n||' '||s1||' '||s2);
exit when cr2%not found;
end loop;
close cr2;
close cr3;
end;
/

 

21. PROGRAM FOR DISPLAYING NAME AND AGE FROM A TABLE

 

 

 

 

 

CREATING TABLE

create table student(rollno number(5), name varchar(10), age number(5), address varchar(30));
insert into student values(10, ‘Gokul’, 21, ‘Kochi’);
insert into student values(6, ‘Name’, 26, ‘Kerala’);

MAIN PROGRAM

declare
name1 student.name%type;
age1 student.age%type;
cursor cr1 is select name,age from student;
begin
dbms_output.put_line(‘Name and age from student’);
dbms_output.put_line(‘name’||’ ‘||’age’);
open cr1;
loop
fetch cr1 into name1,age1;
dbms_output.put_line(name1||’ ‘||age1);
exit when cr1% notfound;
end loop;
close cr1;
end;
/

0 comments:

Post a Comment