0% found this document useful (0 votes)
0 views

PROGRAMS

The document contains a series of PL/SQL code snippets demonstrating how to create tables, insert data, and fetch data using both implicit and explicit cursors. It also covers exception handling, including user-defined exceptions, and shows how to work with cursor parameters. Overall, it serves as a tutorial for managing SQL data through PL/SQL programming techniques.

Uploaded by

Pranjali
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
0 views

PROGRAMS

The document contains a series of PL/SQL code snippets demonstrating how to create tables, insert data, and fetch data using both implicit and explicit cursors. It also covers exception handling, including user-defined exceptions, and shows how to work with cursor parameters. Overall, it serves as a tutorial for managing SQL data through PL/SQL programming techniques.

Uploaded by

Pranjali
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

Date- 27-mar-2023

set serveroutput on;

-- Fetching SQL table data using PL SQL

create table stud


(
rno number(10), stdname varchar(10), marks number(5)
);

insert into stud values (11,'pranjali',80);


insert into stud values (12,'pranali',70);
insert into stud values (14,'utkarsh',90);
insert into stud values (16,'ayansh',99);
insert into stud values (19,'pranj',45);

select * from stud;

declare
rolln number(10);
sname varchar(10);
begin
select rno, stdname into rolln,sname from stud where rno=11;
dbms_output.put_line(rolln);
dbms_output.put_line(sname);
end;

declare
rolln stud.rno%TYPE;
sname stud.stdname%TYPE;
begin
select rno, stdname into rolln,sname from stud where rno=11;
dbms_output.put_line(rolln);
dbms_output.put_line(sname);
end;

set serveroutput on;

-- Fetching SQL table data using PL SQL

--%TYPE --syntax variable tablename.existing field name % TYPE

create table stud


(
rno number(10), stdname varchar(10), marks number(5)
);

insert into stud values (11,'pranjali',80);


insert into stud values (12,'pranali',70);
insert into stud values (14,'utkarsh',90);
insert into stud values (16,'ayansh',99);
insert into stud values (19,'pranj',45);
select * from stud;

declare
rolln number(10);
sname varchar(10);
begin
select rno, stdname into rolln,sname from stud where rno=11;
dbms_output.put_line(rolln);
dbms_output.put_line(sname);
end;

declare
rolln stud.rno%TYPE;
sname stud.stdname%TYPE;
lname sname%TYPE;
begin
select rno, stdname into rolln,sname from stud where rno=11;
dbms_output.put_line(rolln);
dbms_output.put_line(sname);
end;

select * from marksheet;

declare
rolno marksheet.rno%TYPE;
stdname marksheet.sname%TYPE;
begin
select rno,sname into rolno,stdname from marksheet where rno=5;
dbms_output.put_line(rolno);
dbms_output.put_line(stdname);
end;

select * from salesperson;

declare
snm salesperson.sname%TYPE;
ct salesperson.city%TYPE;
sn salesperson.sno%TYPE;
begin
select sno,sname,city into sn,snm,ct from salesperson where sno=4;
dbms_output.put_line(' '||sn||' '||snm||' '||ct);
end;

set serveroutput on;

-- %ROWTYPE -- To fetch particular row from table

-- syntex variable table name %ROWTYPE


-- select * into varibale from tablename where condition

select * from stud;

declare
rec stud%ROWTYPE;
begin
select * into rec from stud where rno=11;
dbms_output.put_line( ' '||rec.rno||' '||rec.stdname || ' ' ||rec.marks );
end;

select * from marksheet;

declare
tbrow marksheet%ROWTYPE;
begin
select * into tbrow from marksheet where rno=12;
dbms_output.put_line('Name '||tbrow.sname);
dbms_output.put_line('marks of marathi '||tbrow.marathi);
end;

select * from salesperson;

declare
sp salesperson%ROWTYPE;
begin
select * into sp from salesperson where sno=3;
dbms_output.put_line(' '||sp.sname);
dbms_output.put_line(' '||sp.city);
dbms_output.put_line(' '||sp.commision);
end;

declare
sp salesperson%ROWTYPE;
begin
select * into sp from salesperson where sno=2;
dbms_output.put_line(' '||sp.sname);
dbms_output.put_line(' '||sp.city);
dbms_output.put_line(' '||sp.commision);
end;

===================================================================================
===================
-- CURSOR having 2 types implicit and explicit
-- Implicit cursor is by default name of that cursor is SQL
-- Explicit cursor we have to declare
-- Attribute of cursor 1- ROWCOUNT, 2- Found, 3-Not found, 4-is open

-- CURSOR IMPLICIT CURSOR

select * from stud;

declare
cnt number(3);
begin
update stud set marks=marks+5 where rno<14;
cnt:=SQL%RowCount;
dbms_output.put_line(cnt);
end;

select * from salesperson;

declare
comm number(10);
begin
update salesperson set commision=commision+100 where commision>=700;
comm:=SQL%RowCount;
dbms_output.put_line(comm);
end;

declare
comm number(10);
begin
update salesperson set commision=commision+100;
comm:=SQL%RowCount;
dbms_output.put_line(comm);
end;

-- Explicit cursor
/*To work on particular records from database we used cursor here we used explicit
cursor
we have to declare cursor syntax - CURSOR cursor name
then used diffrent attribute of cursor like OPEN cursor
FETCH cursor
CLOSE cursor

in the below example first we declare some variable on particular field name on
which we want to work
here declare cursor also and give select query using is
in begin part first open cursor then give loop and then fetch cursor give
particular condition using attribute
print the data you want and close cursor*/

-- Fetching cursor as variable

select * from salesperson;

declare
snm salesperson.sname%TYPE;
ct salesperson.city%TYPE;
comm salesperson.commision%TYPE;
CURSOR cur_sales is
select sname,city,commision from salesperson;
begin
OPEN cur_sales;
LOOP
FETCH cur_sales into snm,ct,comm;
EXIT when cur_sales%notfound;
dbms_output.put_line(' '||snm||' '||ct||' '||comm);
end loop;
CLOSE cur_sales;
end;
select * from customer;

declare
cnm customer.cname%TYPE;
ct customer.city%TYPE;
CURSOR cust is select cname, city from customer;
begin
open cust;
loop
fetch cust into cnm,ct;
exit when cust%notfound;
dbms_output.put_line(' '||cnm||' '||ct);
end loop;
close cust;
end;

declare
cnm customer.cname%TYPE;
ct customer.city%TYPE;
CURSOR cust is select cname, city from customer where cno<=14;
begin
open cust;
loop
fetch cust into cnm,ct;
exit when cust%notfound;
dbms_output.put_line(' '||cnm||' '||ct);
end loop;
close cust;
end;

-- Fetching cursor as a record


-- Here we used %RowType insted to declare variables
-- here cust_rec is only on record we used instead of multiple varibale declaration
-- record name is anything which you want to give
--syntax record name cursorname%RowType

select * from customer;

declare
CURSOR cust is select cname, city from customer;
cust_rec cust%RowType;
begin
open cust;
loop
fetch cust into cust_rec;
exit when cust%notfound;
dbms_output.put_line(' '||cust_rec.cname||' '||cust_rec.city);
end loop;
close cust;
end;
select * from marksheet;

declare
CURSOR marks is select rno,sname,marathi from marksheet;
m_rec marks%RowType;
begin
open marks;
loop
fetch marks into m_rec;
exit when marks%notfound;
dbms_output.put_line(' '||m_rec.rno||' '||m_rec.sname||' '||m_rec.marathi);
end loop;
close marks;
end;

declare
CURSOR marks is select rno,sname,marathi from marksheet where sname='pranj';
m_rec marks%RowType;
begin
open marks;
loop
fetch marks into m_rec;
exit when marks%notfound;
dbms_output.put_line(' '||m_rec.rno||' '||m_rec.sname||' '||m_rec.marathi);
end loop;
close marks;
end;

-- attribute of explicit cursor %isopen, %notfound, %found, %rowcount

declare
CURSOR marks is select rno, sname from marksheet;
m_rec marks%RowType;
begin
open marks;
if marks%isopen then
dbms_output.put_line('Open');
else
dbms_output.put_line('Close');
end if;
loop
fetch marks into m_rec;
exit when marks%notfound;
dbms_output.put_line(' '||m_rec.rno||' '||m_rec.sname);
end loop;
dbms_output.put_line(marks%rowcount);
close marks;
if marks%isopen then
dbms_output.put_line('Open');
else
dbms_output.put_line('Close');
end if;
end;
declare
CURSOR marks is select rno,sname,marathi from marksheet;
m_rec marks%RowType;
begin
open marks;
fetch marks into m_rec;
while marks%found loop
dbms_output.put_line(' '||m_rec.rno||' '||m_rec.sname||' '||m_rec.marathi);

fetch marks into m_rec;


end loop;
close marks;
end;

select * from marksheet;

set serveroutput on

-- Exception Handling
-- When error comes program get crash over , there are 3 type of error 1] Syntax
error 2] logical error 3] run time error
-- exception handling work on run time error

select * from marksheet;

declare
rolno marksheet.rno%TYPE;
snm marksheet.sname%TYPE;
eng marksheet.english%TYPE;
begin
select rno,sname,english into rolno,snm,eng from marksheet where rno=&rno;
dbms_output.put_line(rolno);
dbms_output.put_line(snm);
dbms_output.put_line(eng);
dbms_output.put_line('End of programme');
EXCEPTION
when no_data_found then
dbms_output.put_line('No data found');
end;

declare
fno number(3);
sno number(3);
div number(5);
sumnum number(5);
begin
fno:=&fno;
sno:=&sno;
div:=fno/sno;
dbms_output.put_line(div);
EXCEPTION
when zero_divide then
dbms_output.put_line('Can not divide by zero');
end;

set serveroutput on

-- Exception Handling
-- When error comes program get crash over , there are 3 type of error 1] Syntax
error 2] logical error 3] run time error
-- exception handling work on run time error

select * from marksheet;

declare
rolno marksheet.rno%TYPE;
snm marksheet.sname%TYPE;
eng marksheet.english%TYPE;
begin
select rno,sname,english into rolno,snm,eng from marksheet where rno=&rno;
dbms_output.put_line(rolno);
dbms_output.put_line(snm);
dbms_output.put_line(eng);
dbms_output.put_line('End of programme');
EXCEPTION
when no_data_found then
dbms_output.put_line('No data found');
end;

declare
fno number(3);
sno number(3);
div number(5);
begin
fno:=&fno;
sno:=&sno;
div:=fno/sno;
dbms_output.put_line(div);
EXCEPTION
when zero_divide then
dbms_output.put_line('Can not divide by zero');
end;

-- user definde exception


-- if wants to change in table use query with table field name
-- and changes in program use local user defined variables

select * from marksheet;

declare
ninety_plus_marks EXCEPTION;
rolno marksheet.rno%TYPE;
snm marksheet.sname%TYPE;
eng marksheet.english%TYPE;
begin
select rno,sname,english into rolno,snm,eng from marksheet where rno=&rno;
dbms_output.put_line(rolno);
dbms_output.put_line(snm);
dbms_output.put_line(eng);
if eng<=90 then
update marksheet set english=english+10 where rno=rolno;
else
raise ninety_plus_marks;
end if;
EXCEPTION
when ninety_plus_marks then
dbms_output.put_line('Not allowed');
end;

select * from salesperson;

declare
Excess_comision EXCEPTION;
sn salesperson.sno%TYPE;
snm salesperson.sname%TYPE;
comm salesperson.commision%TYPE;
begin
select sno,sname,commision into sn,snm,comm from salesperson where sno=&sno;
dbms_output.put_line(' '||snm||' '||comm);
if comm<=1000 then
update salesperson set commision=commision+100 where sno=sn;
else
raise Excess_comision;
end if;
EXCEPTION
when Excess_comision then
dbms_output.put_line('Not eligibile for excess commision');
end;

declare
Excess_comision EXCEPTION;
sp salesperson%ROWTYPE;
begin
select * into sp from salesperson where sno=&sno;
dbms_output.put_line(' '||sp.sname||' '||sp.commision);
if sp.commision<=1000 then
update salesperson set commision=commision+100 where sno=sno;
else
raise Excess_comision;
end if;
EXCEPTION
when Excess_comision then
dbms_output.put_line('Not eligibile for excess commision');
end;
set SERVEROUTPUT on;

-- Cursor with parameter

select * from student;

declare
stud student%ROWTYPE;
CURSOR cur_marks(a number,b number)
is
select * from student where rno between a and b;
begin
open cur_marks(12,16);
loop
fetch cur_marks into stud;
exit when cur_marks%notfound;
dbms_output.put_line(' '||stud.rno||' '||stud.stdname||' '||stud.marks);
end loop;
close cur_marks;
end;

-- Cursor with loop

select * from student;

declare
cursor cur_stud
is
select * from student where rno=&rno;
begin
for std in cur_stud loop
dbms_output.put_line(' '||std.rno||' '||std.stdname||' '||std.marks);
end loop;
end;

-- only loop

begin
for std in (select * from student where rno=&rno)
loop
dbms_output.put_line(' '||std.rno||' '||std.stdname||' '||std.marks);
end loop;
end;

You might also like