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

br1 Where c1.CITY 'NAGPUR' AND d1.CNAME c1.CNAME AND d1.CNAME br1.CNAME

This document contains examples of various SQL queries and PL/SQL programming concepts like procedures, functions, triggers, cursors, packages, exceptions etc. It discusses compound SQL queries to retrieve customer names, substring functions, implicit and explicit cursors, procedure to insert doctor details, function to add two numbers, trigger examples, package to add numbers and exception handling.

Uploaded by

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

br1 Where c1.CITY 'NAGPUR' AND d1.CNAME c1.CNAME AND d1.CNAME br1.CNAME

This document contains examples of various SQL queries and PL/SQL programming concepts like procedures, functions, triggers, cursors, packages, exceptions etc. It discusses compound SQL queries to retrieve customer names, substring functions, implicit and explicit cursors, procedure to insert doctor details, function to add two numbers, trigger examples, package to add numbers and exception handling.

Uploaded by

Sarvesh Bedekar
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

DBMS Query

1. Compound Statement

Give names of customer who are borrowers as well as


depositors and having living city Nagpur.
Query: select c1.CNAME from deposite d1, CUSTOMER c1, BORROW
br1 where c1.CITY='NAGPUR' AND d1.CNAME=c1.CNAME AND
d1.CNAME=br1.CNAME;
1. Using substring
select substr('Mumbai',2,3) from dual;

Output: SUB
--umb

1. Give names of depositors having the same living city as that of shivani
and having deposit amount>2000.
SQL> SELECT D1.CNAME FROM DEPOSIT D1, CUSTOMER C1 WHERE D1.AMOUNT>2000
AND D1.CNAME=C1.CNAME AND C1.CITY IN (SELECT C2.CITY FROM CUSTOMER C2
WHERE C2.CNAME='SHIVANI');

1. List all the customers who are borrowers but not customers.
SQL> SELECT CNAME FROM DEPOSIT
2 MINUS
3 (SELECT CNAME FROM BORROW);
2. List all the customers who are both depositors and borrowers.
SQL> SELECT CNAME FROM DEPOSIT INTERSECT(SELECT CNAME FROM BORROW);
3. List all the customers, along with their amount,
borrowers or depositors and living in city NAGPUR.

who

are

either

SQL> SELECT D1.CNAME, D1.AMOUNT FROM DEPOSIT D1,CUSTOMER C1 WHERE


C1.CITY='NAGPUR' AND D1.CNAME=C1.CNAME
2 UNION ALL
3
SELECT BR1.CNAME, BR1.AMOUNT FROM BORROW BR1, CUSTOMER C2 WHERE
C2.CITY='NAGPUR' AND BR1.CNAME=C2.CNAME;

SWITCH CASE
SQL> declare
2 grade char(1);
3 begin

4 grade:='&sgrade';
5 case grade
6

when 'O' then dbms_output.put_line('Distinction');

when 'A' then dbms_output.put_line('First class');

when 'B' then dbms_output.put_line('Passed');

else dbms_output.put_line('Invalid grade');

10 end case;
11 end;
12 /

IF..ELSE
SQL> declare
2 no1 number;
3 no2 number;
4 no3 number;
5 begin
6 no1:= &num1;
7 no2:= &num2;
8 no3:= &num3;
9 if(no1 > no2) and (no1 > no3) then
10 dbms_output.put_line(no1 || ' is greatest');
11 elsif (no2> no3) then
12 dbms_output.put_line(no2 || ' is greatest');
13 else
14 dbms_output.put_line(no3 || '
15 is greatest');
16 end if;
17 end;

FOR LOOP

SQL> declare
2 no number;
3 begin
4 no:=&number;
5 for i in 1..12
6 loop
7 dbms_output.put_line(no || '*' ||i||'=' ||(no*i));
8 end loop;
9 end;
10 /

WHILE LOOP
SQL> declare
2

no number;

i number;

begin

i:=1;

no:=&number;

while i<10

loop

dbms_output.put_line(no || '*' ||i||'=' ||(no*i));

10

i:=i+1;

11

end loop;

12
13

end;
/

IMPORTANT TOPICS :Procedure :-

SQL> create or replace procedure lab as


2 Begin
3 insert into Doctor
values(103,'Rohit','Vishal','Sharma','Malad','Male','[email protected]
'
4 ,'M.B.B.S.','Haematology');
5 End;
6 /
Procedure created.
SQL> execute lab
Functions:-

1. Write a PL/SQL code using Functions to add to numbers.


Function Declaration
create or replace function addn(a in number,b in number) return
number IS
s number;
Begin
s:= a+b;
return s;
End;

Output:

Function created.

To Run the Function


Declare
n1 number;
n2 number;
n3 number;
Begin
n1:= &number1;
n2:= &number2;
n3:=addn(n1,n2);
dbms_output.put_line(n1||'+'||n2||'='||n3);
End;
/

2. Write a PL/SQL code using Functions to find factorial of a


number.
Function Declaration
Create or Replace Function factorial(no number) return number IS
f number;
Begin
f:=1;
for i in Reverse 1..no loop
f:=f*i;
end loop;
return f;
End;
Output:
Function created.

To Run the Function


Declare
n number;
f number;
Begin
n:= &number;
f:= factorial(n);
dbms_output.put_line('Factorial of '||n||' is '||f);
End;

Procedure :-

1. Write a PL/SQL code using Procedure to find greatest of


three numbers.
Procedure Declaration
Create or Replace Procedure greater3 (n1 In number, n2 In number, n3
In number, g Out number) Is
Begin
if n1>=n2 and n1>=n3 then
g:= n1;
elsif n2>=n1 and n2>=n3 then
g:= n2;
else
g:= n3;
end if;
End;
/
Output: Procedure created.

To Run the Procedure


Declare
a number;
b number;
c number;
g number;
Begin
a:= &number1;
b:= &number2;
c:= &number3;
greater3(a,b,c,g);
dbms_output.put_line(g||' is the greatest of the 3 entered
numbers');
End;

Triggers:-

1. Write a PL/SQL code using Before Insert Trigger.


Function Declaration
Create or replace trigger emp_trig
before insert on emp

for each row


when (new.sal>3800)
Begin
raise_application_error(-20003,'Error: Salary cannot be more than
3800');
End;
/
Output:
Trigger created.
insert into emp values(7421,'robert','salesman',7341,'25-Oct1982',4650,Null,10);

Output:
ERROR at line 1:
ORA-20003: Error: Salary cannot be more than 3800
ORA-06512: at "SCOTT.EMP_TRIG", line 2
ORA-04088: error during execution of trigger 'SCOTT.EMP_TRIG'

2. Write a PL/SQL code using Before Update Trigger.


Function Declaration
create or replace trigger emp_up_trig
before update on emp
for each row
when (new.sal<old.sal)
Begin
raise_application_error(-20002,'Error:New salary cannot be
less than original salaray');
End;
/
Output:
Trigger created.
update emp set sal=720
where mgr=7341;

Output:
ERROR at line 1:
ORA-20002: Error:New salary cannot be less than original salaray
ORA-06512: at "SCOTT.EMP_UP_TRIG", line 2
ORA-04088: error during execution of trigger 'SCOTT.EMP_UP_TRIG'

Cursors :-

1. Write a Code PL/SQL which uses Implicit Cursors.

Code:
DECLARE
var_rows number(5);
BEGIN
UPDATE emp SET sal= sal + 1000 where comm is not null;
IF SQL%NOTFOUND THEN
dbms_output.put_line('None of the salaries where updated');
ELSIF SQL%FOUND THEN
var_rows := SQL%ROWCOUNT;
dbms_output.put_line('Salaries for ' || var_rows || 'employees are
updated');
END IF;
END;

Output:
Salaries for 9employees are updated

2. Write a Code PL/SQL which uses Explicit Cursors.

Code:
DECLARE

emp_rec emp%rowtype;
CURSOR emp_cur IS SELECT * FROM emp WHERE sal > 800;
BEGIN
OPEN emp_cur;
FETCH emp_cur INTO emp_rec;
dbms_output.put_line (emp_rec.ename || '
CLOSE emp_cur;

' || emp_rec.sal);

END;
/

Output:

SMITH

820

Ex: Write a Code PL/SQL which uses Explicit Cursors and Loop to
print the values.
Code:
DECLARE
emp_rec emp%rowtype;
CURSOR emp_cur IS SELECT * FROM emp WHERE sal > 2000;
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur INTO emp_rec;
EXIT WHEN emp_cur%NOTFOUND;
dbms_output.put_line (emp_rec.ename || ' ' || emp_rec.sal);
END LOOP;
CLOSE emp_cur;
END;
/
Packages :-

1. Write a PL/SQL code which uses package to add 2 numbers.


Package Declaration
Create or Replace Package pkg1 as
Procedure p_add(n1 In number, n2 In number, n3 Out number);
Function f_add(n1 In number, n2 In number) return number;
End;
/
Output: Package created.

Package Body
Create or Replace Package body pkg1 as
procedure p_add(n1 In number,n2 In number,n3 Out number) IS
Begin
n3:= n1 + n2;

End;
function f_add(n1 in number,n2 in number) return number
is
n3 number;
begin
n3:=n1+n2;
return n3;
end;
End pkg1;
/

Exception :1. Write a PL/SQL code to raise an exception if the value of the
employee number being inserted is less than 0.
Code:
Declare
eno number;
ename varchar2(30);
exp1 EXCEPTION;
Begin
eno:= &emp_no;
ename:= '&ename';
if eno<0 then
raise exp1;
else
insert into details values(eno,ename);
dbms_output.put_line('Data inserted');
end if;
EXCEPTION
when exp1 then
dbms_output.put_line('Eno should not be negative');
End;
/

You might also like