Dbms Lab Manual (r23)
Dbms Lab Manual (r23)
LAB MANUAL
[Link]. – II Semester (R23)
Objectives:
· To teach the student database design and query and PL/SQL.
System/Software Requirements:
· Intel based desktop PC
· Mysql /Oracle latest version Recommended
PROGRAMS LIST:
1) Creation, altering and droping of tables and inserting rows into a table (use constraints while
creating tables) examples using SELECT command.
2) Queries (along with sub Queries) using ANY, ALL, IN, EXISTS, NOTEXISTS, UNION,
INTERSET, Constraints.
Example:- Select the roll number and name of the student who secured fourth rank in the class.
4) Queries using Conversion functions (to_char, to_number and to_date), string functions
(Concatenation, lpad, rpad, ltrim, rtrim, lower, upper, initcap, length, substr and instr), date
functions (Sysdate, next_day, add_months, last_day, months_between, least, greatest, trunc, round,
to_char, to_date)
5)
i)Creation of simple PL/SQL program which includes declaration section, executable section and
exception –Handling section (Ex. Student marks can be selected from the table and printed for
those who secured first class and an exception can be raised if no records were found)
ii)Insert data into student table and use COMMIT, ROLLBACK and SAVEPOINT in PL/SQL
block.
6) Develop a program that includes the features NESTED IF, CASE and CASE expression. The
program can be extended using the NULLIF and COALESCE functions.
7) Program development using WHILE LOOPS, numeric FOR LOOPS, nested loops using ERROR
Handling, BUILT –IN Exceptions, USE defined Exceptions, RAISE- APPLICATION ERROR.
10) Program development using creation of package specification, package bodies, private objects,
package variables and cursors and calling stored packages.
11) Develop programs using features parameters in a CURSOR, FOR UPDATE CURSOR, WHERE
CURRENT of clause and CURSOR variables.
12) Develop Programs using BEFORE and AFTER Triggers, Row and Statement Triggers and
INSTEAD OF Triggers
TEXT BOOKS :
1) ORACLE PL/SQL by example. Benjamin Rosenzweig, Elena Silvestrova, Pearson Education 3rd Edition
2) ORACLE DATA BASE LOG PL/SQL Programming SCOTT URMAN, Tata Mc-Graw Hill.
3) SQL & PL/SQL for Oracle 10g, Black Book, Dr.P.S. Deshpande.
4) Data Base Management System, Oracle SQL and PL/SQL, Pranab kumar Das Gupta, P Radha Krishna
1) Creation, altering and droping of tables and inserting rows into a table (use constraints
while creating tables) examples using SELECT command.
Table created.
SQL> desc dept
Name Null? Type
----------------------------------------- --------
DEPTNO NOT NULL NUMBER(2)
DNAME NOT NULL VARCHAR2(10)
LOC VARCHAR2(8)
SQL> create table emp (empno number(5) primary key,ename varchar(10) not
null,job varchar(10),mgr number(4),hiredate date,sal number(7,2)
check(sal>=500 and sal<=10000),comm number(7,2) default 1,deptno
number(2), foreign key(deptno) references dept);
Table created.
14 rows selected.
14 rows selected.
14 rows selected.
15 rows selected.
SQL> select empno eno,ename worker from emp e,dept d where
[Link](+)=[Link];
ENO WORKER
---------- ---------
7499 allen
7521 ward
7566 jones
7654 martin
7698 blake
7782 clark
7788 scott
7839 king
7844 turner
7876 adems
7902 ford
ENO WORKER
---------- ---------
7934 miller
7369 smith
7900 james
15 rows selected.
SQL> select empno,ename from emp where deptno=10 union select empno,ename
from emp where deptno=30 order by 1;
EMPNO ENAME
---------- ---------
7499 allen
7521 ward
7654 martin
7698 blake
7782 clark
7839 king
7844 turner
7900 james
7934 miller
9 rows selected.
2) Queries (along with sub Queries) using ANY, ALL, IN, EXISTS, NOTEXISTS,
UNION, INTERSET, Constraints.
Example:- Select the roll number and name of the student who secured fourth rank in the
class.
SQL> select job from emp where deptno=20 intersect select job from emp
where deptno=30;
JOB
---------
clerk
manager
SQL> select job from emp where deptno=20 minus select job from emp where
deptno=10 minus select job from emp where deptno=30;
JOB
---------
analyst
SQL> select ename from emp where deptno=(select deptno from emp where
ename='miller');
ENAME
---------
clark
king
miller
SQL> select ename from emp where sal=(select max(sal) from emp);
ENAME
---------
turner
SQL> select * from dept where deptno=(select distinct deptno from emp
where mgr=7698);
DEPTNO DNAME LOC
---------- ---------- --------
30 sales chicago
SQL> select ename from emp where empno in(select empno from incr);
ENAME
---------
blake
miller
turner
martin
SQL> select * from emp where deptno=10 and exists(select count(*) from emp
where deptno=10 group by deptno having count(*)>10);
no rows selected
SQL> select ename,job from emp e where not exists(select mgr from emp
where mgr=[Link]);
ENAME JOB
--------- ---------
turner salesman
ward salesman
martin salesman
allen salesman
miller clerk
smith clerk
adems clerk
james clerk
8 rows selected.
SQL> select ename from emp where sal>any(select sal from emp where
deptno=20);
ENAME
---------
turner
king
scott
ford
jones
blake
clark
allen
miller
martin
ward
ENAME
---------
adems
james
13 rows selected.
SQL> select empno,ename,sal from emp where sal>any(select sal from emp
where job='manager');
EMPNO ENAME SAL
---------- --------- ----------
7844 turner 10000
7839 king 5000
7788 scott 3000
7902 ford 3000
7566 jones 2975
7698 blake 2850
6 rows selected.
SQL> select ename from emp where sal>all(select sal from emp where
deptno=20);
ENAME
---------
king
turner
SQL> select empno,ename,sal from emp where sal>all(select sal from emp
where job='manager');
EMPNO ENAME SAL
---------- --------- ----------
7902 ford 3000
7788 scott 3000
7839 king 5000
7844 turner 10000
SQL> select ename,sal from emp where sal>all(select distinct sal from emp
where deptno=30);
no rows selected
SQL> select [Link] from emp e where [Link] in(select [Link] from dept
d where [Link]='chicago');
ENAME
---------
allen
ward
martin
blake
turner
james
6 rows selected
SQL> select [Link] from emp e where [Link] not in(select [Link] from
dept d where [Link]='chicago');
ENAME
---------
miller
king
clark
smith
ford
adems
scott
jones
8 rows selected.
SQL> select [Link] from emp e,dept d
where [Link]=[Link] and [Link]='dallas'
union
select [Link] from emp e,dept d
where [Link]=[Link] and [Link]='newyork';
ENAME
---------
clark
king
miller
SQL> select [Link] from emp e INTERSECT select [Link] from dept d;
DEPTNO
----------
10
20
30
SQL> select deptno from dept minus select deptno from emp;
DEPTNO
ENAME SAL
--------- ----------
miller 1300
smith 800
james 950
14 rows selected.
SQL> select [Link] from emp e where [Link] in(select [Link] from dept
d where [Link]='chicago');
ENAME
---------
allen
ward
martin
blake
turner
james
6 rows selected.
SQL> select [Link] from emp e where [Link] not in(select [Link] from
dept d where [Link]='chicago');
ENAME
---------
miller
king
clark
smith
ford
adems
scott
jones
8 rows selected.
SQL> select [Link] from emp e INTERSECT select [Link] from dept d;
DEPTNO
----------
10
20
30
SQL> select deptno from dept minus select deptno from emp;
DEPTNO
----------
40
3) Queries using Aggregate functions (COUNT, SUM, AVG, MAX and
MIN), GROUP BY, HAVING and Creation and dropping of Views.
SQL> select job,count(*) from emp group by job order by count(*) desc;
JOB COUNT(*)
--------- ----------
salesman 4
clerk 4
manager 3
analyst 2
president 1
SQL> select ename from emp where sal=(select max(sal) from emp);
ENAME
---------
turner
SQL> select job,avg(sal) from emp group by job having avg(sal)=(select
max(avg(sal)) from emp group by job);
JOB AVG(SAL)
--------- ----------
president 5000
SQL> select * from emp where deptno=10 and exists(select count(*) from emp
where deptno=10 group by deptno having count(*) >10);
no rows selected
SQL>
4)Queries using Conversion functions (to_char, to_number and to_date), string functions
(Concatenation, lpad, rpad, ltrim, rtrim, lower, upper, initcap, length, substr and instr), date
functions (Sysdate, next_day, add_months, last_day, months_between, least, greatest, trunc, round,
to_char, to_date
SQL> select ABS(-65) from dual;
ABS(-65)
----------
65
SQL> select CEIL(SAL) "CEIL(88.9) from emp
where sal BETWEEN 3000 AND 5000;
CEIL(88.9)
----------
3000
5000
3000
SQL> select FLOOR(SAL),CEIL(88.9) from emp
where sal BETWEEN 3000 AND 5000;
FLOOR(SAL) CEIL(88.9)
---------- ----------
3000 89
5000 89
3000 89
MOD(200,300)
------------
200
SAL POWER(SAL,2)
---------- ------------
2450 6002500
5000 25000000
1300 1690000
COMM-SAL SIGN(COMM-SAL)
---------- --------------
-1300 -1
-750 -1
150 1
-1500 -1
SQL> select sal,SQRT(sal) from emp where deptno=10;
SAL SQRT(SAL)
---------- ----------
2450 49.4974747
5000 70.7106781
1300 36.0555128
SQL> select TRUNC(90.723,1),TRUNC(90.723,-1),TRUNC(90.723) from dual;
SAL TRUNC(SQRT(SAL),2)
---------- ------------------
2450 49.49
5000 70.71
1300 36.05
SAL ROUND(SQRT(SAL),2)
---------- ------------------
2450 49.5
5000 70.71
1300 36.06
EXP(4)
----------
54.59815
A B C
- - -
% d e
UPPER(DNAME) UPP
-------------------- ---
ACCOUNTING ABC
SALES ABC
RESEARCH ABC
OPERATIONS ABC
LPAD(DNAME,15,'$')
------------------------------------------------------------
LPAD(DNAME,15,'')
------------------------------------------------------------
$$$$$accounting
$$$$$$$$$$sales
$$$$$$$research
LPAD(DNAME,15,'$')
------------------------------------------------------------
LPAD(DNAME,15,'')
------------------------------------------------------------
$$$$$operations
RPAD(DNAME,15,'$')
------------------------------------------------------------
RPAD(DNAME,15,'')
------------------------------------------------------------
accounting$$$$$
sales$$$$$$$$$$
research$$$$$$$
RPAD(DNAME,15,'$')
------------------------------------------------------------
RPAD(DNAME,15,'')
------------------------------------------------------------
operations$$$$$
First
-----------
Bis and Bat
Second
---------
is and at
DNAME SUBSTR(DNAME,2,4
-------------------- ----------------
SUBSTR(DNAME,4)
--------------------------------------------------------------------
accounting ccouounting
sales aleses
research eseaearch
DNAME SUBSTR(DNAME,2,4
-------------------- ----------------
SUBSTR(DNAME,4)
--------------------------------------------------------------------
operations perarations
TRANSLATE(
----------
123456ghij
DNAME INSTR(DNAME,'E')
-------------------- ----------------
accounting 0
sales 4
research 2
operations 3
DNAME LENGTH(DNAME)
-------------------- -------------
accounting 10
sales 5
research 8
operations 10
14 rows selected.
SQL> select
ename,INSTR(ename,'a'),SUBSTR(job,1,3),LPAD(ename,10,'.'),RPAD(ename,10,'.
')
2 from emp;
allen 1 sal
.....allen
allen.....
ward 2 sal
......ward
ward......
jones 0 man
.....jones
martin 2 sal
....martin
martin....
blake 3 man
clark 3 man
.....clark
clark.....
king 0 pre
......king
king......
turner 0 sal
....turner
turner....
adams 1 cle
.....adams
james 2 cle
.....james
james.....
ford 0 ana
miller 0 cle
....miller
miller....
14 rows selected.
SYSDATE
------------------
13-AUG-15
MONTHS_BETWEEN('05-JAN-98','05-MAR-98') MONTHS_BETWEEN('05-MAR-98','05-
JAN-98')
--------------------------------------- ----------------------------------
-2 2
SYSDATE NEXT_DAY(SYSDATE,'
------------------ ------------------
13-AUG-15 19-AUG-15
SYSDATE TO_CHAR(SYSDATE,'DAY')
------------------ ------------------------------------
13-AUG-15 THURSDAY
GREATEST(10,'7',-1)
-------------------
10
Leas
----
ABCD
DNAME
--------------------
TRANSLATE(DNAME,'E','1')
--------------------------------------------------------------------------
accounting
accounting
sales
sal1s
research
r1s1arch
DNAME
--------------------
TRANSLATE(DNAME,'E','1')
--------------------------------------------------------------------------
operations
op1rations
ENAME HIREDDAT
---------- --------
smith 17/12/80
jones 02/04/81
scott 19/04/87
adams 23/05/87
ford 03/12/81
14 rows selected.
YY COUNT(*)
-- ----------
87 2
81 10
82 1
80 1
ENAME HIREDDATE
---------- ---------------
jones APR 81
martin SEP 81
blake MAY 81
clark JUN 81
king NOV 81
turner SEP 81
james DEC 81
ford DEC 81
miller JAN 82
9 rows selected.
SQL> select ename,sal+TO_NUMBER('100.00') as salary
2 from emp;
ENAME SALARY
---------- ----------
smith 900
allen 1700
ward 1350
jones 3075
martin 1350
blake 2950
clark 2550
scott 3100
king 5100
turner 1600
adams 1200
ENAME SALARY
---------- ----------
james 1050
ford 3100
miller 1400
14 rows selected.
CONCATENATEDSTRING
--------------------------------------------------------------------------
------
Department number10with nameAccountingis situated inNewyork
Department number20with nameSalesis situated inChicago
Department number30with nameResearchis situated inDallas
Department number40with nameOperationsis situated inBoston
LPAD(ENAME,9,'*')
------------------------------------
****smith
****allen
*****ward
****jones
***martin
****blake
****clark
****scott
*****king
***turner
****adams
LPAD(ENAME,9,'*')
------------------------------------
****james
*****ford
***miller
14 rows selected.
RPAD(ENAME,9,'*')
------------------------------------
smith****
allen****
ward*****
jones****
martin***
blake****
clark****
scott****
king*****
turner***
adams****
RPAD(ENAME,9,'*')
------------------------------------
james****
ford*****
miller***
14 rows selected.
LTRIM(ENAM
----------
mith
jones
cott
adams
ford
ENAME LENGTH(ENAME)
---------- -------------
ward 4
allen 5
james 5
blake 5
turner 6
martin 6
6 rows selected.
JOB
----------------
anal
cler
pres
sale
mana
ENAME INSTR(ENAME,'S')
---------- ----------------
smith 1
jones 5
scott 1
adams 5
ford 0
HOLIDAY
------------------
21-DEC-80
22-FEB-81
01-MAR-81
05-APR-81
04-OCT-81
03-MAY-81
14-JUN-81
26-APR-87
22-NOV-81
13-SEP-81
24-MAY-87
HOLIDAY
------------------
06-DEC-81
06-DEC-81
24-JAN-82
14 rows selected.
HIREDDATE REVIEWDATE
------------------ ------------------
17-DEC-80 17-DEC-81
02-APR-81 02-APR-82
19-APR-87 19-APR-88
23-MAY-87 23-MAY-88
03-DEC-81 03-DEC-82
HIREDDATE LASTDAY
------------------ ------------------
09-JUN-81 30-JUN-81
17-NOV-81 30-NOV-81
23-JAN-82 31-JAN-82
LOWEST
----------
-2
HIGHEST
----------
89
TRUNC(567,23165613)
-------------------
567
TRUNC(567.231651,3)
-------------------
567.231
SQL>
5) i) Creation of simple PL/SQL program which includes declaration section, executable section
and exception –Handling section (Ex. Student marks can be selected from the table and printed
for those who secured first class and an exception can be raised if no records were found)
ii)Insert data into student table and use COMMIT, ROLLBACK and SAVEPOINT
in PL/SQL block
/
Enter value for rno: 41
old 4: [Link]:=&rno;
new 4: [Link]:=41;
Enter value for name:kba
old 5: [Link]:='&name';
new 5: [Link]:='kba';
Enter value for s1:67
old 6: x.s1:=&s1;
new 6: x.s1:=67;
Enter value for s2:89
old 7: x.s2:=&s2;
new 7: x.s2:=89;
Enter value for s3:56
old 8: x.s3:=&s3;
new 8: x.s3:=56;
Enter value for s4:90
old 9: x.s4:=&s4;
new 9: x.s4:=90;
SQL> /
Enter value for rno:56
old 4: [Link]:=&rno;
new 4: [Link]:=56;
Enter value for name:knsl
old 5: [Link]:='&name';
new 5: [Link]:='knsl';
Enter value for s1:89
old 6: x.s1:=&s1;
new 6: x.s1:=89;
Enter value for s2:90
old 7: x.s2:=&s2;
new 7: x.s2:=90;
Enter value for s3:78
old 8: x.s3:=&s3;
new 8: x.s3:=78;
Enter value for s4:88
old 9: x.s4:=&s4;
new 9: x.s4:=88;
SQL> /
Enter value for rno:36
old 4: [Link]:=&rno;
new 4: [Link]:=36;
Enter value for name:ks
old 5: [Link]:='&name';
new 5: [Link]:='ks';
Enter value for s1:65
old 6: x.s1:=&s1;
new 6: x.s1:=65;
Enter value for s2:77
old 7: x.s2:=&s2;
new 7: x.s2:=77;
Enter value for s3:82
old 8: x.s3:=&s3;
new 8: x.s3:=82;
Enter value for s4:92
old 9: x.s4:=&s4;
new 9: x.s4:=92;
SQL>/
6) Develop a program that includes the features NESTED IF, CASE and
CASE expression. The program can be extended using the NULLIF and
COALESCE functions.
Table created.
SQL> declare
2 x [Link]%type;
3 y [Link]%type;
4 bonus number(7,2);
5 begin
6 select sal,eno into x,y from e1
7 where eno=&eno;
8 if x between 500 and 1000 then
9 bonus:=500;
10 elsif x between 1001 and 2000 then
11 bonus:=1000;
12 elsif x between 2001 and 3000 then
13 bonus:=2000;
14 else
15 bonus:=3000;
16 end if;
17 update e1 set sal=sal+bonus
18 where eno=y;
19 end;
20 /
Enter value for eno: 7369
old 7: where eno=&eno;
new 7: where eno=7369;
SQL> /
Enter value for eno: 7499
old 7: where eno=&eno;
new 7: where eno=7499;
SQL> /
Enter value for eno: 7521
old 7: where eno=&eno;
new 7: where eno=7521;
SQL> /
Enter value for eno: 7654
old 7: where eno=&eno;
new 7: where eno=7654;
SQL> /
Enter value for eno: 7698
old 7: where eno=&eno;
new 7: where eno=7698;
SQL> /
Enter value for eno: 7782
old 7: where eno=&eno;
new 7: where eno=7782;
SQL> /
Enter value for eno: 7839
old 7: where eno=&eno;
new 7: where eno=7839;
SQL> /
Enter value for eno: 7844
old 7: where eno=&eno;
new 7: where eno=7844;
SQL> /
Enter value for eno: 7876
old 7: where eno=&eno;
new 7: where eno=7876;
SQL> /
Enter value for eno: 7900
old 7: where eno=&eno;
new 7: where eno=7900;
PL/SQL procedure successfully completed.
SQL> /
Enter value for eno: 7902
old 7: where eno=&eno;
new 7: where eno=7902;
SQL> /
Enter value for eno: 7934
old 7: where eno=&eno;
new 7: where eno=7934;
6b.
SQL> declare
2 x [Link]%type;
3 begin
4 select Deptno into x from dept
5 where Deptno=&Deptno;
6 case x
7 when 10 then
8 dbms_output.put_line('Accounting');
9 when 20 then
10 dbms_output.put_line('Research');
11 when 30 then
12 dbms_output.put_line('Sales');
13 when 40 then
14 dbms_output.put_line('Operations');
15 else
16 dbms_output.put_line('Unknown Dept');
17 end case;
18 end;
19 /
Enter value for deptno: 10
old 5: where Deptno=&Deptno;
new 5: where Deptno=10;
Accounting
SQL> /
Enter value for deptno: 20
old 5: where Deptno=&Deptno;
new 5: where Deptno=20;
Research
SQL> /
Enter value for deptno: 30
old 5: where Deptno=&Deptno;
new 5: where Deptno=30;
Sales
SQL> /
Enter value for deptno: 40
old 5: where Deptno=&Deptno;
new 5: where Deptno=40;
Operations
SQL> /
Enter value for deptno: 60
old 5: where Deptno=&Deptno;
new 5: where Deptno=60;
declare
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at line 4
6c.
SQL> declare
2 n number:=&n;
3 r number;
4 begin
5 r:=nullif(mod(n,2),0);
6 dbms_output.put_line('Remainder is'||r);
7 end;
8 /
SQL> set serveroutput on
SQL> /
Enter value for n: 6
old 2: n number:=&n;
new 2: n number:=6;
Remainder is
PL/SQL procedure successfully completed.
SQL> /
Enter value for n: 5
old 2: n number:=&n;
new 2: n number:=5;
Remainder is1
6d.
SQL> declare
2 a number:=&a;
3 b number:=&b;
4 c number:=&c;
5 begin
6 case
7 when ((a>b) and (a>c)) then
8 dbms_output.put_line('a is Biggest'||a);
9 when ((b>a) and (b>c)) then
10 dbms_output.put_line('b is Biggest'||b);
11 else
12 dbms_output.put_line('c is Biggest'||c);
13 end case;
14 end;
SQL> /
Enter value for a: 98
old 2: a number:=&a;
new 2: a number:=98;
Enter value for b: 32
old 3: b number:=&b;
new 3: b number:=32;
Enter value for c: 76
old 4: c number:=&c;
new 4: c number:=76;
a is Biggest98
PL/SQL procedure successfully completed.
SQL> /
Enter value for a: 5676
old 2: a number:=&a;
new 2: a number:=5676;
Enter value for b: 34657
old 3: b number:=&b;
new 3: b number:=34657;
Enter value for c: 2346
old 4: c number:=&c;
new 4: c number:=2346;
b is Biggest34657
6e.
SQL> create table e2
2 (eid number(5),
3 ename varchar2(10),
4 sal number(7,2),
5 dname varchar2(10),
6 comm number(7,2));
Table created.
SQL> /
Enter value for 1: 102
Enter value for 2: B
Enter value for 3: 2000
Enter value for 4: IT
Enter value for 5: 20
old 1: insert into e2 values(&1,'&2',&3,'&4',&5)
new 1: insert into e2 values(102,'B',2000,'IT',20)
1 row created.
SQL> /
Enter value for 1: 103
Enter value for 2: C
Enter value for 3: 28000
Enter value for 4: IT
Enter value for 5: 20
old 1: insert into e2 values(&1,'&2',&3,'&4',&5)
new 1: insert into e2 values(103,'C',28000,'IT',20)
1 row created.
SQL> /
Enter value for 1: 104
Enter value for 2: D
Enter value for 3: null
Enter value for 4: Sales
Enter value for 5: null
old 1: insert into e2 values(&1,'&2',&3,'&4',&5)
new 1: insert into e2 values(104,'D',null,'Sales',null)
1 row created.
SQL> /
Enter value for 1: 105
Enter value for 2: E
Enter value for 3: null
Enter value for 4: Sales
Enter value for 5: 10
old 1: insert into e2 values(&1,'&2',&3,'&4',&5)
new 1: insert into e2 values(105,'E',null,'Sales',10)
1 row created.
COALESCE(COMM,SAL,EID)
----------------------
10
20
20
104
10
7) Program development using WHILE LOOPS, numeric FOR LOOPS, nested loops
using ERROR Handling, BUILT –IN Exceptions, USE defined Exceptions, RAISE-
APPLICATION ERROR.
SQL> /
Enter value for job: president
old 4: select job into x from e1 where job='&job';
new 4: select job into x from e1 where job='president';
presidentJob type appeared only once
SQL> /
Enter value for job: student
old 4: select job into x from e1 where job='&job';
new 4: select job into x from e1 where job='student';
Job type not Found
c. using while
SQL> declare
2 n number(5);
3 r number(5);
4 s number(5):=0;
5 n1 number(5);
6 begin
7 n:=&n;
8 n1:=n;
9 while(n>0)
10 loop
11 r:=mod(n,10);
12 s:=s+r;
13 n:=trunc(n/10);
14 end loop;
15 dbms_output.put_line('sum of digits is'||s);
16 end;
17 /
Enter value for n: 123
old 7: n:=&n;
new 7: n:=123;
sum of digits is6
PL/SQL procedure successfully completed.
d. nested for
SQL> declare
2 n number:=&n;
3 j number;
4 i number;
5 k number;
6 begin
7 for i in 1..n
8 loop
9 for j in 1..6
10 loop
11 k:=i*j;
12 dbms_output.put_line(i || '*' || j || '=' || k);
13 dbms_output.new_line;
14 end loop;
15 dbms_output.new_line;
16 dbms_output.put_line('........');
17 end loop;
18 end;
19 /
Procedure created.
SQL> /
Procedure created.
Procedure created.
SQL> select eno,sal from e1 where eno=7369;
ENO SAL
---------- ----------
7369 960
.
SQL> select eno,sal from emp where eno=7934;
ENO SAL
---------- ----------
7934 1300
SQL> select eno,sal from emp where eno=7521;
ENO SAL
---------- ----------
7521 1250
SQL>
[Link] development using creation of stored functions, invoke functions in SQL
Statements and write complex functions.
9a.
1 create or replace function fact(n number,f in out number) return
number IS
2 i number;
3 begin
4 if n<0 then
5 return -1;
6 end if;
7 for i in 1..n
8 loop
9 f:=f*i;
10 end loop;
11 return f;
12* end fact;
SQL> /
Function created.
1 declare
2 n number:=&n;
3 f number:=1;
4 k number;
5 begin
6 k:=fact(n,f);
7 if k<0 then
8 dbms_output.put_line('factorial for negative numbers donot exist');
9 else
10 dbms_output.put_line('factorial is'||k);
11 end if;
12* end;
13 /
Enter value for n: 4
old 2: n number:=&n;
new 2: n number:=4;
Factorial is24
PL/SQL procedure successfully completed.
SQL> /
Enter value for n: 6
old 2: n number:=&n;
new 2: n number:=6;
Factorial is720
PL/SQL procedure successfully completed.
SQL> /
Enter value for n: -6
old 2: n number:=&n;
new 2: n number:=-6;
Factorial for Negative Numbers not exist
PL/SQL procedure successfully completed.
9b.
1 create or replace function a1(eid number) return number IS
2 incr [Link]%type;
3 net [Link]%type;
4 veno [Link]%type;
5 vsal [Link]%type;
6 vcomm [Link]%type;
7 begin
8 select eno,sal,NVL(comm,0) into veno,vsal,vcomm from e1
9 where eno=eid;
10 net:=vsal+vcomm;
11 if vsal<=3000 then
12 incr:=0.20*net;
13 elsif vsal>=3000 and vsal<=6000 then
14 incr:=0.30*net;
15 else
16 incr:=0.40*net;
17 end if;
18 return incr;
19* end a1;
20 /
Function created.
SQL> ed;
Wrote file [Link]
1 declare
2 eid number:=&eid;
3 k [Link]%type;
4 begin
5 k:=a1(eid);
6 update e1 set sal=sal+k where eno=eid;
7* end;
8 /
Enter value for eid: 7369
old 2: eid number:=&eid;
new 2: eid number:=7369;
ENO SAL
---------- ----------
7369 1990.66
10 a.
1 create or replace package p1 is
2 procedure p_empdept1(dn NUMBER);
3* end p1;
SQL> /
Package created.
SQL> ed;
Wrote file [Link]
10 b.
SQL> create or replace package p2 is procedure fact3(n number);
2 end p2;
3 /
Package created.
10 c.
create or replace package p3 as
procedure adde(id [Link]%type,name [Link]%type,job [Link]%type,mgr
[Link]%type,hireddate [Link]%type,comm [Link]%type,sal
[Link]%type,deptno [Link]%type,phno [Link]%type);
procedure demp(id [Link]%type);
procedure uemp(id [Link]%type);
end p3;
SQL> /
Package created.
SQL> ed;
Wrote file [Link]
ENO SAL
---------- ----------
7369 4990.66
SQL> select * from e1 where eno=123;
no rows selected
SQL> execute [Link](123,'jone','dba',456,'12-sep-89',345,5000,20,9988);
no rows selected
SQL>
a.
SQL> declare
2 veno [Link]%type;
3 vename [Link]%type;
4 vsal [Link]%type;
5 vDeptno [Link]%type;
6 cursor c1 is select eno,ename,sal,Deptno from e1
7 where sal+NVL(comm,0)>1500;
8 begin
9 open c1;
10 loop
11 fetch c1 into veno,vename,vsal,vDeptno;
12 if c1%found then
13 dbms_output.put_line(veno||' '||vename||' '||vsal||' '||vDeptno);
14 else
15 exit;
16 end if;
17 end loop;
18 close c1;
19 end;
20 /
7499 allen 1600 30
7521 ward 2524 30
7566 jones 3570 20
7654 martin 1250 30
7698 blake 2850 30
7782 clark 2450 10
7788 scott 3000 20
7839 king 5000 10
7902 ford 3000 20
7934 miller 2246.4 10
11b.
SQL> declare
2 salary [Link]%type;
3 s number:=0;
4 cursor c1 is select sal from e1;
5 begin
6 open c1;
7 loop
8 fetch c1 into salary;
9 s:=s+salary;
10 exit when c1%notfound;
11 update emp set sal=sal+sal*10/100
12 where Deptno=20 and Deptno=40;
13 end loop;
14 dbms_output.put_line('Total is: ');
15 dbms_output.put_line(to_char(s));
16 dbms_output.put_line('Rows Fetched'||c1%rowcount);
17 close c1;
18 end;
19 /
Total is:
34276.8
Rows Fetched14
11 c.
SQL> declare
2 i number;
3 cursor c2 is
4 select * from e1
5 where Deptno=20
6 for update of sal;
7 begin
8 for i in c2
9 loop
10 update e1 set sal=10000
11 where current of c2;
12 end loop;
13 end;
14 /
PL/SQL procedure successfully completed.
12) Develop Programs using BEFORE and AFTER Triggers, Row and Statement
Triggers and INSTEAD OF Triggers
12a.
SQL> create table client_master
(clientno number(10),
bal_due number(10,2),
address varchar2(10),
6 city varchar2(10));
Table created.
1 row created.
SQL> /
Enter value for 1: 2
Enter value for 2: xyz
Enter value for 3: 500
Enter value for 4: saec
Enter value for 5: chirala
old 1: insert into client_master values(&1,'&2',&3,'&4','&5')
new 1: insert into client_master values(2,'xyz',500,'saec','chirala')
1 row created.
SQL> /
Enter value for 1: 3
Enter value for 2: pqr
Enter value for 3: 700
Enter value for 4: sacet
Enter value for 5: vetapalem
old 1: insert into client_master values(&1,'&2',&3,'&4','&5')
new 1: insert into client_master values(3,'pqr',700,'sacet','vetapalem')
1 row created.
Table created.
12 b.
SQL> create or replace trigger audit_trail before update on client_master
2 for each row
3 declare
4 oper varchar2(10);
5 clientno client_master.clientno%type;
6 name client_master.name%type;
7 bal_due client_master.bal_due%type;
8 begin
9 if updating then
10 oper:='update';
11 end if;
12 if deleting then
13 oper:='delete';
14 end if;
15 clientno:=:[Link];
16 name:=:[Link];
17 bal_due:=:old.bal_due;
18 insert into audit_client
values(clientno,name,bal_due,oper,user,sysdate);
19 end;
20 /
Trigger created.
1 row updated.
12 c.
SQL> create or replace trigger audit_trail after delete on client_master
2 for each row
3 declare
4 oper varchar2(10);
5 clientno client_master.clientno%type;
6 name client_master.name%type;
7 bal_due client_master.bal_due%type;
8 begin
9 if updating then
10 oper:='update';
11 end if;
12 if deleting then
13 oper:='delete';
14 end if;
15 clientno:=:[Link];
16 name:=:[Link];
17 bal_due:=:old.bal_due;
18 insert into audit_client
values(clientno,name,bal_due,oper,user,sysdate);
19 end;
20 /
Trigger created.
SQL> delete from client_master where clientno=3;
1 row deleted.
SQL> select * from audit_client;
CLIENTNO NAME BAL_DUE OPERATION USERID ODATE
---------- ---------- ---------- ---------- ---------- ------------------
2 xyz 500 update CSE541 08-OCT-15
3 pqr 700 delete CSE541 08-OCT-15
SQL>
E:\acedamic\f\j2ee\jdbc>javac [Link]
E:\acedamic\f\j2ee\jdbc>java ConnectToOraDB
..........Connected to Oracle Database......class
[Link]
Ction
14. Write a Java program to connect to a database using JDBC and insert
values into it
E:\acedamic\f\j2ee\jdbc>javac [Link]
E:\acedamic\f\j2ee\jdbc>java CreateTable
..........Connected to Oracle Database...........
E:\acedamic\f\j2ee\jdbc>
Output:
SID NUMBER(4)
SNAME VARCHAR2(10)
MARKS NUMBER(3)
SQL>
SQL>
}
}