Top Banner
PL-SQL Programs… Program 1:- Write a PL/SQL block to find the maximum number from given three numbers. declare a number; b number; c number; begin a:=&a; b:=&b; c:=&c; if (a>b and a>c) then dbms_output.put_line('a is maximum ' || a); elsif (b>a and b>c) then dbms_output.put_line('b is maximum ' || b); else dbms_output.put_line('c is maximum ' || c); end if; end; Program 2:- Write a PL/SQL block to find the sum of first 100 natural nos. declare a number:=0; begin SANDIP PATEL(LDRP-ITR) Page 1
54
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Mc amca04919 plsql programs

PL-SQL Programs…Program 1:-

Write a PL/SQL block to find the maximum number from given three numbers.

declare a number; b number; c number;begin a:=&a; b:=&b; c:=&c;

if (a>b and a>c) then dbms_output.put_line('a is maximum ' || a);

elsif (b>a and b>c) thendbms_output.put_line('b is maximum ' || b);

else dbms_output.put_line('c is maximum ' || c);

end if;end;

Program 2:-

Write a PL/SQL block to find the sum of first 100 natural nos.

declare a number:=0; begin

for i in 1..100loop

a:=a+i; end loop; dbms_output.put_line('The sum of 100 natural nos is = '||a);

end;

SANDIP PATEL(LDRP-ITR) Page 1

Page 2: Mc amca04919 plsql programs

Program 3:-

Write a PL/SQL block to find the sum of first 100 odd nos. and even nos)declare odd number:=0; even number:=0; i number;begin for i in 1..100 loop if(i mod 2 = 0) then even:=even+i; else odd:=odd+i; end if; end loop;dbms_output.put_line('The Sum of 100 even nos is ' || even);dbms_output.put_line('The Sum of 100 odd nos is ' || odd);end;

Program 4:-

Write a PL/SQL block to display the Information of given student on following table Stud (sno, sname, address, city).

Table Creation…

create table stud( sno number primary key, sname char(15), addr varchar(30), city char(15));

insert into stud values(1,'hiral','2,krishna society','Mehsana.'); insert into stud values(2,'pinky','4,Kalyaneshwer society','Mehsana.'); insert into stud values(3,'Dhruvi','24,Pushpavati society','Mehsana');

Program…

declare no number; n number;

name char(15);add varchar(50);c char(15);

SANDIP PATEL(LDRP-ITR) Page 2

Page 3: Mc amca04919 plsql programs

begin

n:=&n; select sno,sname,addr,city into no,name,add,c from stud where sno=n;

dbms_output.put_line('The Sno is ' || no); dbms_output.put_line('The Sname is ' || name); dbms_output.put_line('The address is ' || add); dbms_output.put_line('The city is ' || c);end;

Program 5:-

Write a PL/SQL block for preparing a Net Salary, given employee on following table

Emp (eno, ename, address, city)Salary (eno, basic, da, hra, it)Net_Salary (eno, total_allowance, total_deduction, netpay)Notes : D.A. = 59% of basic , H.R.A. = 500, I.T. = 2% of basic Total_Allowance = Basic + D.A. + H.R.A., Total_Deduction = I.T. Netpay = Total_Allowance – Total_Deduction.

Table Creation…

create table emp(eno number primary key,ename char(15),addr varchar(30),city char(15));

insert into emp values(1,'hiral','2,krishna society','Mehsana.'); insert into emp values(2,'pinky','4,Kalyaneshwer society','Mehsana.'); insert into emp values(3,'Dhruvi','24,Pushpavati society','Mehsana');

create table salary(eno number references emp,basic number(10,2),da number(10,2) default NULL,hra number(10,2) default 500,it number(10,2) default NULL);

insert into salary(eno,basic) values(1,20000); insert into salary(eno,basic) values(2,30000);

SANDIP PATEL(LDRP-ITR) Page 3

Page 4: Mc amca04919 plsql programs

insert into salary(eno,basic) values(3,40000); update salary set da=basic*0.59,it=basic*0.02;

create table netsal(eno number references emp,totalallow number(10,2),totalded number(10,2),netpay number(10,2));

Program…

declare

no number; n number; d number(10,2); b number(10,2); h number(10,2); i number(10,2); ta number(10,2); td number(10,2); np number(10,2);

begin n:=&n; select eno,basic,da,hra,it into no,b,d,h,i from salary where eno=n; ta:=b+d+h; td:=i; np:=ta-td; insert into netsal values(no,ta,td,np);end;

Program 6:-

Write a PL/SQL block to raise the salary by 20% of given employee on following table.

Emp_Salary (eno, ename, city, salary)

Table Creation…

SANDIP PATEL(LDRP-ITR) Page 4

Page 5: Mc amca04919 plsql programs

eno number primary key,ename char(15),city char(15), sal number(10,2));

insert into empsal values(1,'Hiral','Mehsana',20000);insert into empsal values(2,'Pinkey','Mehsana',15000);insert into empsal values(3,'Dhruvi','Mehsana',10000);

Program…

declare

n number; s number(10,2);

begin n:=&n; --select sal into s from empsal where eno=n; update empsal set sal=sal+(sal*0.20) where eno=n;

end;

Program 7:-

Write an Implicit Cursor to accept the employee number from the user. You have to delete this record and display the appropriate message on the following table.

Emp (eno, ename, address, city)

Table Creation…

create table emp1(

SANDIP PATEL(LDRP-ITR) Page 5

Page 6: Mc amca04919 plsql programs

eno number primary key,ename char(15),addr varchar(30),city char(15));

insert into emp1 values(1,'hiral','2,krishna society','Mehsana.');insert into emp1 values(2,'pinky','4,Kalyaneshwer society','Mehsana.'); insert into emp1 values(3,'Dhruvi','24,Pushpavati society','Mehsana');

Program…

declare

n number;

begin

n:=&n; delete from emp1 where eno=n; if sql%found then dbms_output.put_line('The record ' ||n|| ' success fully deleted'); else dbms_output.put_line('The record ' ||n|| ' not found'); end if;end;

Program 8:-

Write a Cursor to display the first five records on the following table.

Student(sno, sname, address, city)

Table Creation…

create table stu( sno number primary key, sname char(15), addr varchar(30), city char(15));

SANDIP PATEL(LDRP-ITR) Page 6

Page 7: Mc amca04919 plsql programs

insert into stu values(1,'hiral','2,krishna society','Mehsana.');insert into stu values(2,'pinky','4,Kalyaneshwer society','Mehsana.'); insert into stu values(3,'Dhruvi','24,Pushpavati society','Mehsana'); insert into stu values(4,'ukti','2,krishna society','Mehsana.');insert into stu values(5,'jaya','4,Kalyaneshwer society','Mehsana.'); insert into stu values(6,'prisha','2,krishna society','Ahmedabad');insert into stu values(7,'pray','4,Kalyaneshwer society','Mehsana.');

Program… declare

cursor c_stu is select sno,sname,addr,city from stu; n number; no number; name char(15); a varchar(30); c char(15);

begin open c_stu; if c_stu%isopen then loop fetch c_stu into no,name,a,c; exit when c_stu%rowcount > 5; dbms_output.put_line(' '||no||' ' ||name||' '||a||' '||c); end loop; end if; close c_stu;end;

Program 9:-

Write a Cursor for preparing a Net Salary for employee’s of finance department and Net Pay is more than 10,000 on following table.

Emp (eno, ename, department, address, city)Salary (eno, basic, da, hra, it)Net_Salary (eno,total_allowance, total_deduction, netpay)

SANDIP PATEL(LDRP-ITR) Page 7

Page 8: Mc amca04919 plsql programs

Table Creation…

create table emp2(eno number primary key,

ename char(15),dept char(20),addr varchar(30),city char(15));

insert into emp2 values(1,'hiral','finace','2,krishna society','Mehsana.');insert into emp2 values(2,'pinky','account','4,Kalyaneshwer society','Mehsana.'); insert into emp2 values(3,'Dhruvi','finace','24,Pushpavati society','Mehsana');insert into emp2 values(4,'ukti','account','4,Kalyaneshwer society','Mehsana.'); insert into emp2 values(5,'jaya','finace','24,Pushpavati society','Mehsana');

create table salary1(eno number references emp2,basic number(10,2),da number(10,2) default NULL,hra number(10,2) default 500,it number(10,2) default NULL);

insert into salary1(eno,basic) values(1,2000); insert into salary1(eno,basic) values(2,30000);insert into salary1(eno,basic) values(3,40000); insert into salary1(eno,basic) values(4,15000);insert into salary1(eno,basic) values(5,10000); update salary1 set da=basic*0.59,it=basic*0.02;

create table netsalary(eno number references emp2,totalallow number(10,2),totalded number(10,2),netpay number(10,2));

Program…

SANDIP PATEL(LDRP-ITR) Page 8

Page 9: Mc amca04919 plsql programs

declare

cursor c_salemp is select emp2.eno,basic,da,hra,it from emp2,salary1 where dept='finace' and emp2.eno=salary1.eno; no number; d number(10,2); b number(10,2);

h number(10,2); i number(10,2); ta number(10,2); td number(10,2); np number(10,2);begin

open c_salemp; loop fetch c_salemp into no,b,d,h,i; exit when c_salemp%notfound; ta:=b+h+d; td:=d; np:=ta-td; if np > 10000 then insert into netsalary values(no,ta,td,np);

end if; end loop; close c_salemp;end;

Program 10:-

Write a Cursor to display the employee number, name, department and salary of first employee getting the highest salary.

Emp (eno, ename, department, address, city)Salary (eno, salary)

Table Creation…

create table emp2(eno number primary key,

SANDIP PATEL(LDRP-ITR) Page 9

Page 10: Mc amca04919 plsql programs

ename char(15),dept char(20),addr varchar(30),city char(15));

insert into emp2 values(1,'hiral','finace','2,krishna society','Mehsana.');insert into emp2 values(2,'pinky','account','4,Kalyaneshwer society','Mehsana.'); insert into emp2 values(3,'Dhruvi','finace','24,Pushpavati society','Mehsana');insert into emp2 values(4,'ukti','account','4,Kalyaneshwer society','Mehsana.'); insert into emp2 values(5,'jaya','finace','24,Pushpavati society','Mehsana');

create table salary2(eno number references emp2,sal number(10,2));

insert into salary2 values(1,22000);insert into salary2 values(1,12000);insert into salary2 values(2,25000);insert into salary2 values(4,10000);

Program…

declare cursor c_empsal is select salary2.eno,ename,dept,sal from salary2,emp2 where sal in(select max(sal) from salary2) and emp2.eno=salary2.eno;

n salary2.eno%type ; name emp2.ename%type;

s salary2.sal%type; d emp2.dept%type;

begin

open c_empsal; loop fetch c_empsal into n,name,d,s; exit when c_empsal%notfound; dbms_output.put_line('The employee no is '||n);

dbms_output.put_line('The employee name is '||name);

SANDIP PATEL(LDRP-ITR) Page 10

Page 11: Mc amca04919 plsql programs

dbms_output.put_line('The employee department is '||d);

dbms_output.put_line('The employee salary is '||s); end loop;

close c_empsal;end;

Program 11:-Writes a Function to check whether the given number is prime or not.

Program…

create or replace function prime(a in number) return number isj number:=0;b number:=0;n number:=a;beginb:=n-1; for i in 2..b loop if (mod(a,i)=0) then j:=1;

exit; end if; end loop;--dbms_output.put_line('The j is'||j);return j;end;

declare

a number;j number;

begin a:=&a; j:=prime(a); if(j=1) then dbms_output.put_line ('Not prime no'); else

SANDIP PATEL(LDRP-ITR) Page 11

Page 12: Mc amca04919 plsql programs

dbms_output.put_line ('prime no');

end if;end;

Program 12:-Write a Function to find the sum of digits of accepted no.

Program…create or replace function sumdig(a in number) return number isb number;

c number:=0;m number;

begin m:=a; for a in 0..m loop b:=m mod 10; c:=b+c; m:=trunc(m/10); end loop;return c;

end;

declare

a number;c number;begin a:=&a; c:=sumdig(a); dbms_output.put_line ('sum of all digits is = ' ||c); end;

SANDIP PATEL(LDRP-ITR) Page 12

Page 13: Mc amca04919 plsql programs

Program 13:-Write a Function to display first 25 Fibonacci nos.

Program…

create or replace function fibo(a in number) return number isn number:=a;m number:=0;s number;c number;begin

dbms_output.put_line('m= '||m); dbms_output.put_line('n= '||n); for c in 1..27 loop s:=m+n; dbms_output.put_line (''||s); m:=n; n:=s; end loop; return 0;end;

declare n number:=1;s number;

begin s:=fibo(n);

end;

Program 14:-Write a Function to display the reverse string of a given string.

Program…

SANDIP PATEL(LDRP-ITR) Page 13

Page 14: Mc amca04919 plsql programs

create or replace function f_reverse(str in varchar) return varchar is s varchar(5); l number;

beginl:=length(str);

for i in reverse 1..lloop

s:=s||substr(str,i,1);end loop;

return s;end;

declarestr varchar(50);s varchar(50);

begin

str:='&str';s:=f_reverse(str);dbms_output.put_line('The reverse string is '||s);

end;

Program 15:-

Write a Function that take Employee Number and return the salary on following table.

Emp (eno, ename, city, salary)

Table Creation…

create table emps(eno number primary key,

ename char(15), city char(15), sal number(10,2));

insert into emps values(1,'Hiral','Mehsana',20000);insert into emps values(2,'Pinky','Mehsana',21000);insert into emps values(3,'Dhruvi','Mehsana',22000);

SANDIP PATEL(LDRP-ITR) Page 14

Page 15: Mc amca04919 plsql programs

Program…

create or replace function getno(no in number) return number iss number(10,2);begin select sal into s from emps where eno=no;return s;end;

declare no number; s number(10,2);begin

no:=&no; s:=getno(no); dbms_output.put_line('The salary of ' ||no|| ' is '||s);end;

Program 16:-

Write a Function to count the total number of student having grade ‘PASS’ on following table.

Student (sno, sname, grade)

Table Creation…

create table stud1(sno number primary key,sname char(15),sub1 number,sub2 number,sub3 number,grade char(15));

insert into stud1 values(1,'Pray',98,94,90,'Distinction');insert into stud1 values(2,'Jay',57,74,40,'First');insert into stud1 values(3,'Prisha',58,54,50,'Second');insert into stud1 values(4,'Masum',48,44,40,'Pass');insert into stud1 values(5,'Shyam',40,40,40,'Pass');

SANDIP PATEL(LDRP-ITR) Page 15

Page 16: Mc amca04919 plsql programs

Program…

create or replace function totalpass(s in char) return number isno number;cursor c_total is select count(sno) from stud1 where grade=s;beginopen c_total; loop

fetch c_total into no;exit when c_total%notfound;

end loop; close c_total;

return no;end;

declare s char(5):='Pass'; n number;begin n:=totalpass(s); dbms_output.put_line('The total no of student who are pass is '||n);end;

Program 17:-

Write a Function to assign the grade to the entire student using following table

Stud (sno, sname, sub1, sub2, sub3, and grade)

Note: If percentage >= 70 then ‘Distinction’ else If percentage >= 60 then ‘First’ else If percentage >= 50 then ‘Second’ Otherwise ‘Fail’

Table Creation…

create table stud1(sno number primary key,sname char(15),sub1 number,sub2 number,

SANDIP PATEL(LDRP-ITR) Page 16

Page 17: Mc amca04919 plsql programs

sub3 number,grade char(15));

insert into stud1 values(1,'Pray',98,94,90,'Distinction');insert into stud1 values(2,'Jay',57,74,40,'First');insert into stud1 values(3,'Prisha',58,54,50,'Second');insert into stud1 values(4,'Masum',48,44,40,'Pass');insert into stud1 values(5,'Shyam',40,40,40,'Pass');

Program…

create or replace function givegrade(p in number) return char is g char(15);begin

if p >= 70 theng:='Distinction';

return g;elsif p >= 60 then

g:='First';return g;

elsif p>= 50 theng:='Pass';return g;

elseg:='Fail';return g;

end if;end;

declare cursor c_grade is select sno,sub1,sub2,sub3 from stud1; no stud1.sno%type; s1 stud1.sub1%type; s2 stud1.sub2%type; s3 stud1.sub3%type; t number; g stud1.grade%type; p number(10,2);begin

open c_grade; loop

fetch c_grade into no,s1,s2,s3;

SANDIP PATEL(LDRP-ITR) Page 17

Page 18: Mc amca04919 plsql programs

exit when c_grade%notfound; t:=s1+s2+s3; p:=t/3; g:=givegrade(p);update stud1 set grade=g where sno=no;

end loop;close c_grade;end;

Program 18:-

Write a Procedure to check the given year is leap year or not.

Program…

create or replace procedure leapyear(y in number) isbegin

if y mod 4 =0 and y mod 100 <>0 or y mod 400=0 thendbms_output.put_line('The '|| y|| ' is leap year');

else dbms_output.put_line('The '|| y|| ' is not leap year');

end if;end;

declare y number;begin y:=&y; leapyear(y);end;

Program 19:-

Write a Procedure to display the following type of Multiplication Table as per given number.

5 * 1 = 5

SANDIP PATEL(LDRP-ITR) Page 18

Page 19: Mc amca04919 plsql programs

5 * 2 = 10” ” = ”” ” = ”5 * 10 = 50

Program…

create or replace procedure mult(n in number) isa number:=1;begin for i in 1..10

loopa:=n*i;

dbms_output.put_line ( n ||' * '||i|| ' = '||a);end loop;

end;

declaren number;

beginn:=&n;mult(n);

end;

Program 20:-

Write a Procedure to display this kind of output on screen.

1 2 3 3 4 5 4 5 6 7 5 6 7 8 9 . . . . . 90 91

Program…

create or replace procedure disp(n in number) isa number:=0;

begin

SANDIP PATEL(LDRP-ITR) Page 19

Page 20: Mc amca04919 plsql programs

for i in 1..n loop for j in 1..i loop a:=a+1; dbms_output.put(' '||a); end loop; dbms_output.put_line(' ');a:=i; end loop;end;

declare

n number;begin

n:=&n; disp(n);end;

Program 21:-

Write a Procedure to convert given octal number to decimal number.

Program…

create or replace procedure octdes(n in number) isa number:=1;no number;ans number:=1;r number;s number:=0;beginno:=n;

SANDIP PATEL(LDRP-ITR) Page 20

Page 21: Mc amca04919 plsql programs

while no > 0 loop

r:=no mod 10;ans:=r * a;s:=s+ans;a:=a * 8;no:=trunc(no/10);

end loop; dbms_output.put_line('The decimal no of octal no is ' ||s);end;

declare no number;begin no:=&no; octdes(no);end;

Program 22:-

Write a Procedure that take Employee Number and return all the information related to the employee. Display the following format using table - Emp (eno, ename, city, salary)

Employee Number Employee Name City Salary

Records are displayed here

Program…

create or replace procedure recdisp(n in number) is cursor c_emps is select eno,ename,city,sal from emps where eno=n; no emps.eno%type; name emps.ename%type; c emps.city%type; s emps.sal%type;beginopen c_emps; loop

fetch c_emps into no,name,c,s;

SANDIP PATEL(LDRP-ITR) Page 21

Page 22: Mc amca04919 plsql programs

exit when c_emps%notfound; dbms_output.put_line(no||' '||name||' '||c||' '||s); end loop;

end;

declaren number;begin n:=&n; dbms_output.put_line('Employee no Employee name city

salary'); recdisp(n);end;

Program 23:-

Writes a Package that has a Function that checks the given string is palindrome or not

Program…

create or replace package strings as function palindrom(s varchar) return varchar;

end strings;

create or replace package body strings asfunction palindrom(s varchar) return varchar is

n number;c varchar(50);

beginn:=length(s);for i in reverse 1..nloopc:=c || substr(s,i,1);end loop;

dbms_output.put_line('The Entered string is '||s); dbms_output.put_line('The Reverse string is '||c);

return(c);end;

end strings;

declare

SANDIP PATEL(LDRP-ITR) Page 22

Page 23: Mc amca04919 plsql programs

s varchar(50);c varchar(50);

begins:='&s';c:=strings.palindrom(s);if s=c then

dbms_output.put_line('The given string is Palindrom ');else

dbms_output.put_line('The given string is NotPalindrom ');

end if;end;

Program 24:-

Write a Package that has a Procedure to find 1+1/2+1/3+ . . . . . +1/n.

Program…

create or replace package con as function raci(n number) return number;End con;create or replace package body con as

function raci(n number) return number isa number(10,2):=0;

beginfor i in 1..nloopa:=a+1/i;end loop;

return(a);end;

end con;

declaren number;a number(10,2);

SANDIP PATEL(LDRP-ITR) Page 23

Page 24: Mc amca04919 plsql programs

beginn:=&n;a:=con.raci(n);

dbms_output.put_line('The Answer is '||a);end; create or replace package con as procedure raci(n number);End con;create or replace package body con as

procedure raci(n number) isa number(10,2):=0;

beginfor i in 1..nloopa:=a+1/i;end loop;

dbms_output.put_line('The Answer is '||a);end;

end con;

declaren number;begin

n:=&n; con.raci(n);

end;

Program 25:-

Write a Package that has a Function to check given number is not negative and a Procedure to convert the given number into word. For Example 25 = Twenty Five.

Program…

create or replace package pac1 as function check1(n number) return number; function basic(n number) return varchar;End pac1;

create or replace package body pac1 as

SANDIP PATEL(LDRP-ITR) Page 24

Page 25: Mc amca04919 plsql programs

function basic(n number) return varchar asbegin

if n=1 thenreturn (' One');

elsif n=2 thenreturn (' Two');

elsif n=3 thenreturn (' Three');

elsif n=4 thenreturn (' Four');

elsif n=5 thenreturn (' Five');

elsif n=6 thenreturn (' Six');

elsif n=7 thenreturn (' Seven');

elsif n=8 thenreturn (' Eight');

elsif n=9 thenreturn (' Nine');

end if;end;function check1(n number) return number ism number;mo varchar(10);r number;l number;begin

m:=n; mo:=m;

l:=length(mo);dbms_output.put_line('length ='||l);if n<0 then

dbms_output.put_line('The Number is Negative'); return 0;

elsif n>0 thendbms_output.put_line('The Number is Positive');if n<=20 then

if n=1 thendbms_output.put_line(n||' = One');

elsif n=2 thendbms_output.put_line(n||' = Two');

elsif n=3 thendbms_output.put_line(n||' = Three');

elsif n=4 then

SANDIP PATEL(LDRP-ITR) Page 25

Page 26: Mc amca04919 plsql programs

dbms_output.put_line(n||' = Four');elsif n=5 then

dbms_output.put_line(n||' = Five');elsif n=6 then

dbms_output.put_line(n||' = Six');elsif n=7 then

dbms_output.put_line(n||' = Seven');elsif n=8 then

dbms_output.put_line(n||' = Eight');elsif n=9 then

dbms_output.put_line(n||' = Nine');elsif n=10 then

dbms_output.put_line(n||' = Ten');elsif n=11 then

dbms_output.put_line(n||' = Elevan');elsif n=12 then

dbms_output.put_line(n||' = Twelve');elsif n=13 then

dbms_output.put_line(n||' = Thirteen');elsif n=14 then

dbms_output.put_line(n||' = Fourteen');elsif n=15 then

dbms_output.put_line(n||' = Fifteen');elsif n=16 then

dbms_output.put_line(n||' = Sixteen');elsif n=17 then

dbms_output.put_line(n||' = Seventeen');elsif n=18 then

dbms_output.put_line(n||' = Eighteen');elsif n=19 then

dbms_output.put_line(n||' = Nineteen');elsif n=20 then

dbms_output.put_line(n||' = Twenty'); end if;end if;if n>=21 and n<=29 then

mo:=substr(mo,1,1);if mo=2 then

mo:='Twenty';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

SANDIP PATEL(LDRP-ITR) Page 26

Page 27: Mc amca04919 plsql programs

end if;elsif n=30 then

dbms_output.put_line(n||'= Thirty');elsif n>=31 and n<=39 then

mo:=substr(mo,1,1);if mo=3 then

mo:='Thirty';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=40 then

dbms_output.put_line(n||'= Fourty');elsif n>=41 and n<=49 then

mo:=substr(mo,1,1);if mo=4 then

mo:='Fourty';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=50 then

dbms_output.put_line(n||'= Fifty');elsif n>=51 and n<=59 then

mo:=substr(mo,1,1);if mo=5 then

mo:='Fifty';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=60 then

SANDIP PATEL(LDRP-ITR) Page 27

Page 28: Mc amca04919 plsql programs

dbms_output.put_line(n||'= Sixty');elsif n>=61 and n<=69 then

mo:=substr(mo,1,1);if mo=6 then

mo:='Sixty';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=70 then

dbms_output.put_line(n||'= Seventy');elsif n>=71 and n<=79 then

mo:=substr(mo,1,1);if mo=7 then

mo:='Seventy';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=80 then

dbms_output.put_line(n||'= Eighty');elsif n>=81 and n<=89 then

mo:=substr(mo,1,1);if mo=8 then

mo:='Eighty';while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=90 then

dbms_output.put_line(n||'= Ninty');elsif n>=91 and n<=99 then

mo:=substr(mo,1,1);

SANDIP PATEL(LDRP-ITR) Page 28

Page 29: Mc amca04919 plsql programs

if mo=9 thenmo:='Ninty';

while m>0loop

r:=m mod 10;exit;

end loop; dbms_output.put_line(n||'= '||mo||pac1.basic(r));

end if;elsif n=100 then

dbms_output.put_line(n||'= Hundred');end if;

return 0;elsif n=0 then

dbms_output.put_line(n||' = Zero'); return 0;

end if;end;

end pac1;

declaren number;a number;beginn:=&n;if n<=100 thena:=pac1.check1(n);elsedbms_output.put_line('Number must be Less than 100');end if;end;

Program 26:-

Write a Package that has two object on following table. (i) The Function is used to calculate the NetSalary. (ii) The Procedure is used to display the Pay Slip in following format.

Emp (eno, ename, basic)Salary (eno, da, hra, it, gross_sal, net_sal)

SANDIP PATEL(LDRP-ITR) Page 29

Page 30: Mc amca04919 plsql programs

Notes : D.A. = 59% of basic , H.R.A. = 500, I.T. = 2% of basic Gross_salary = Basic + D.A. + H.R.A., Net_salary = Gross_salary – I.T.

Employee Number Employee Name Gross Salary Net Salary

Total ******** ********

Table Creation…

create table empac(eno number,ename char(25),basic number(10,2));insert into empac values(1,'Hiral',100000);insert into empac values(2,'Dhruvi',200000);insert into empac values(3,'Pinky',10000);

create table salpac(eno number,da number(10,2),hra number(10,2),it number(10,2),gross number(10,2),net number(10,2) default NULL);

insert into salpac(eno,da,hra,it) values(1,100000*0.59,500,100000*0.02);insert into salpac(eno,da,hra,it) values(2,200000*0.59,500,200000*0.02);insert into salpac(eno,da,hra,it) values(3,10000*0.59,500,10000*0.02);update salpac set gross = 100000+da+hra where eno=1;update salpac set gross = 200000+da+hra where eno=2;update salpac set gross = 10000+da+hra where eno=3;procedure display(n in number);

Program…

create or replace package countnetsal asfunction netsalary(n number) return number;procedure display;

end countnetsal;

SANDIP PATEL(LDRP-ITR) Page 30

Page 31: Mc amca04919 plsql programs

create or replace package body countnetsal asfunction netsalary(n number) return number is

a number(10,2):=0;d number(10,2);c number(10,2);g number(10,2);no number;b number(10,2);cursor c_emp is select eno,basic from empac where eno=n;

beginopen c_emp;if c_emp%isopen thenloopfetch c_emp into no,b;exit when c_emp%notfound;d:=b*0.59;c:=b*0.02;g:=b+c+d;insert into salpac values(n,d,500,c,g,g-500);dbms_output.put_line('Successfully Inserted');end loop;else

dbms_output.put_line('Successfully Not Inserted');end if;close c_emp;

return(a);end;procedure display as

cursor c_sal is select empac.eno,ename,gross,net from empac,salpac where empac.eno=salpac.eno;

no empac.eno%type;name empac.ename%type;g salpac.gross%type;n salpac.net%type;tg number(10,2):=0;tn number(10,2):=0;

beginopen c_sal;loopfetch c_sal into no,name,g,n;exit when c_sal%notfound;tg:=tg+g;

SANDIP PATEL(LDRP-ITR) Page 31

Page 32: Mc amca04919 plsql programs

tn:=tn+n;dbms_output.put_line(' '||no ||' '||name||' '||g||' '||n);end loop;close c_sal;

dbms_output.put_line('__________________________________');dbms_output.put_line(' Total ' tg ||' '||tn);

end; end countnetsal;

declaren number;a number(10,2);

begin n:=&n;a:=countnetsal.netsalary(n);dbms_output.put_line(' Employee No Employee Name GrossSalary

Netsalary');countnetsal.display();

end;

declare cursor c_sal is select empac.eno,ename,gross,net from empac,salpac where

empac.eno=salpac.eno;no empac.eno%type;name empac.ename%type;g salpac.gross%type;n salpac.net%type;tg number(10,2):=0;tn number(10,2):=0;

beginopen c_sal;loopfetch c_sal into no,name,g,n;exit when c_sal%notfound;tg:=tg+g;tn:=tn+n;dbms_output.put_line(' '||no||' '||name||' '||g||' '||n);end loop;close c_sal;dbms_output.put_line(' Total Gross '||tg);dbms_output.put_line(' Total Netsalary '||tn);

end;

SANDIP PATEL(LDRP-ITR) Page 32

Page 33: Mc amca04919 plsql programs

create or replace procedure check1 isbegin dbms_output.put_line('HELLO');end;begincheck1();end;

Program 27:-

Write a Trigger on Insert to convert the name into capital letters.

Program…

create or replace trigger t1before insert on studfor each row

declare no number;name varchar(10);begin

no:=:new.sno;name:=upper(:new.sname);dbms_output.put_line('the '||name||'No '||no);:new.sno:=no;:new.sname:=name;

end;

****************************************Extra*************************************

create or replace trigger Upperletterafter insert on studfor each row

declare sno number;sname varchar(10);begin

SANDIP PATEL(LDRP-ITR) Page 33

Page 34: Mc amca04919 plsql programs

sno:=:new.sno;sname:=:new.sname;insert into stud1 values(Sno,Sname);

end;

*****************************************************************************

declare sname varchar(10);begin

sname:=upper(:new.sname);

end;

Program 28:-

Write a Trigger to check the Pincode is exactly six digit or not.

Program…

create or replace trigger tpinbefore insert on pinfor each row

declare no varchar(10);begin

no:=length(:new.p);if no<>6 then

raise_application_error(-20001,'Pincode must be six digit'); end if;end;

Program 29:-

Write a Trigger to check the mark is not zero or negative.

Program…

SANDIP PATEL(LDRP-ITR) Page 34

Page 35: Mc amca04919 plsql programs

create or replace trigger negbefore insert on tranfor each row

declare no number;begin

no:=:new.obt;if no<=0 then

raise_application_error(-200002,'Number is Negative'); end if;end;

Program30:-

Write a Trigger that check the student_id must be start with ‘M’.

Program…

create or replace trigger capbefore insert on strfor each row

declare name char(10);begin

name:=:new.sname;if name not like '%M%' then

raise_application_error(-20003,'Name is not start with M'); end if;end;

Program31:-

Develop a PL/SQL Project for Student Marksheet using all the database object (Cursor,Function, Procedure, Package and Trigger) on following table.

Student_Master(sno, sname, total_marks, marks_obtain, result)Subject_Master(sub_code, sub_name, sub_max_mark)Student_Transaction(sno, sub_code, marks_obtain)

Student Mark Sheet

SANDIP PATEL(LDRP-ITR) Page 35

Page 36: Mc amca04919 plsql programs

Sr. No. Roll. No. Name Total Marks

Mark Obta

in

Grade

Table Creation…

create table student(sno number primary key,sname char(10),total number,obt number,grade char(10));

insert into student(sno,sname,total) values(1,'Ronak',250);insert into student(sno,sname,total) values(2,'Reena',250);

create table subject(sbno number primary key,sbname char(10),sbm number);

insert into subject values(301,'CPP',48);insert into subject values(302,'OR',48); create table tran(sno number references student,sbno number references subject,obt number);

insert into tran values(1,301,25);insert into tran values(1,302,48);insert into tran values(2,301,55);insert into tran values(2,302,48);

Program…

*************************package****************************

create or replace package mixt asprocedure stdins(no number);function stdgrd(no number) return number;procedure disp;

end mixt;

SANDIP PATEL(LDRP-ITR) Page 36

Page 37: Mc amca04919 plsql programs

create or replace package body mixt asprocedure stdins(no number) as cursor c_mark is select sum(obt) from tran where sno=no; tt number;begin open c_mark; loop fetch c_mark into tt; exit when c_mark%notfound; update student set obt=tt where sno=no; end loop;end;

function stdgrd(no number) return number as cursor c_mark is select obt from student where sno=no; tt number; g char(10);begin open c_mark; loop fetch c_mark into tt; exit when c_mark%notfound;

if tt>=35 and tt<=50 theng:='Pass';

elsif tt>=51 and tt<=100 theng:='Seond';

elsif tt>=101 and tt<=200 theng:='First';

elsif tt>=200 and tt<=250 theng:='Dist';

end if; update student set grade=g where sno=no; end loop;return 0;end;

procedure disp as i number:=1; cursor c_stud is select sno,sname,total,obt,grade from

student; no student.sno%type; name student.sname%type; t student.total%type; o student.obt%type;

SANDIP PATEL(LDRP-ITR) Page 37

Page 38: Mc amca04919 plsql programs

g student.grade%type; begin

Dbms_output.put_line('Sr.No Rollno Name Totalmarks Marksobtain Grade');

open c_stud; loop fetch c_stud into no,name,t,o,g; exit when c_stud%notfound; dbms_output.put_line( i ||' '||no||' '||name||' '||t||'

'||o||' '||g); i:=i+1;end loop;

end;end mixt;

declaren number;a number;beginn:=&n;mixt.stdins(n);a:=mixt.stdgrd(n);mixt.disp;end;

*************************Trigger***************************

create or replace trigger tckbefore insert on tranfor each row

declare t number;m number;

begin

select sum(obt) into t from tran where sno=:new.sno;t:=t+:new.obt;select sbm into m from subject where sbno=:new.sbno;if t>250 or :new.obt>m then raise_application_error(-200004,'Total of obtain marks must

less than 250');

SANDIP PATEL(LDRP-ITR) Page 38

Page 39: Mc amca04919 plsql programs

end if;end;

Program32:-

Develop a PL/SQL Project for Employee Payslip using all the database object (Cursor,Function, Procedure, Package and Trigger) on following table.

Emp_Master(eno,ename,desc_code, basic, gross_sal, net_sal)Pay_Master(desc_code, desc_name, da, hra, it, max_basic)Emp_Transaction(eno,desc_code, basic)

Nisarg Softech Pvt. Ltd. Date :Salary Slip for Month of :-

Employee Number Employee Name Gross Salary Net Salary

Total ******** ********

Table Creation…

create table empmas(eno number primary key,ename char(10),dcode number references paymas,basic number,grossal number,netsal number);

insert into empmas(eno,ename,dcode,basic) values(1,'Ronak',1,10000);insert into empmas(eno,ename,dcode,basic) values(2,'Reena',2,20000);

create table paymas(dcode number primary key,dname char(10),da number,hra number,

SANDIP PATEL(LDRP-ITR) Page 39

Page 40: Mc amca04919 plsql programs

it number,mbasic number);

insert into paymas values(1,'Computer',59,500,2,50000);insert into paymas values(2,'Printer',49,400,2,20000);

create table emptran(eno number,dcode number,basic number);

Program…

****************************Package*****************************

create or replace package pacemp asfunction countsals(no number) return number;procedure disp;

end pacemp;

create or replace package body pacemp asfunction countsals(no number) return number ascursor c_empc is select da,hra,it,basic from paymas,emptran where emptran.dcode=no and emptran.dcode=paymas.dcode;b emptran.basic%type;d paymas.da%type;h paymas.hra%type;i paymas.it%type;n empmas.netsal%type;g empmas.grossal%type;begin open c_empc; loop fetch c_empc into d,h,i,b; exit when c_empc%notfound; d:=b*(d/100); i:=b*(i/100); g:=b+d+h; n:=g-i;

update empmas set grossal=g,netsal=n where dcode=no;

end loop;return 0;end;

SANDIP PATEL(LDRP-ITR) Page 40

Page 41: Mc amca04919 plsql programs

procedure disp ascursor c_empt is select eno,ename,grossal,netsal from empmas;no empmas.eno%type;name empmas.ename%type;g empmas.grossal%type;ns empmas.netsal%type;

begindbms_output.put_line(' Emp No Emp Name Gross

sal Net sal');open c_empt;loopfetch c_empt into no,name,g,ns;exit when c_empt%notfound;

dbms_output.put_line(no||' '||name||' '||g||' '||ns);

end loop;end;

end pacemp;

declareno number;a number;

beginno:=&no;a:=pacemp.countsals(no);pacemp.disp;

end;

*****************************Trigger***************************

create or replace trigger emptbefore insert on empmasfor each row

declareb number;

beginselect mbasic into b from paymas where dcode=:new.dcode;

if :new.basic>b then

raise_application_error(-200005,'Basic less than maximum basic');

SANDIP PATEL(LDRP-ITR) Page 41

Page 42: Mc amca04919 plsql programs

else insert into emptran values(:new.eno,:new.dcode,:new.basic);end if;

end;

SANDIP PATEL(LDRP-ITR) Page 42