Oracle plsql docs
-
Upload
sumit-kasana -
Category
Documents
-
view
264 -
download
1
Transcript of Oracle plsql docs
-
8/17/2019 Oracle plsql docs
1/39
PL/ SQL Content
PL/ SQL:
1. Introduction
2. Exceptions
3. Cursors
4. Procedures
5. Functions
6. Packages
7. Triggers
Introduction:-
1) What is Pl/SQL
It is extension to SQL language.
PL/SQL = SQL + Prograing !eatures.
"#e !ollo$ing are t#e a%&antages o! PL/SQL
1' (e )an use *rograing !eatures lie I! stt, loo*s, ran)#ing et)
2' (e )an #a&e user %e!inie% error essages using t#e )on)e*t o! ex)e*tion #an%ling.
3' (e )an *er!or relate% a)tions using t#e )on)e*t o! triggers.
4' Pl/SQL #el*s in re%u)ing t#e net$or tra!!i).
PL/SQL 0lo) stru)ture:
----------------------
%e)lare........... -- e)lare se)tion
...........
........... egin
........... -- xe)utale se)tion
..........
...........
...........
...........
ex)e*tion
-
8/17/2019 Oracle plsql docs
2/39
.......... -- x)e*tion se)tion
..........
en%/
Pl/SQL lo) )ontains 3 se)tions.
1' e)lare se)tion
2' xe)utale se)tion
3' x)e*tion Se)tion
1' e)lare se)tion:
-------------------
It is use% to %e)lare lo)al &ariales, ursor , ex)e*tions et). ll t#e lines et$een %e)lare an% egin is )alle% %e)lare se)tion."#is se)tion is o*tional.
2' xe)utale Se)tion:
----------------------------
"#e a)tual tas $#i)# s#oul% e %one is $ritten in t#e exe)utale se)tion. ll t#e lines et$een
0egin an% ex)e*tion e$or%s is )alle% as xe)utale se)tion.
"#is se)tion is an%ator
3' x)e*tion Se)tion:
-----------------------I! an ex)e*tion is raise% in t#e exe)utale se)tion,
)ontrol enters into ex)e*tion se)tion.
ll t#e lines et$een ex)e*tion an% en% is )alle% ex)e*tion se)tion. "#is se)tion is o*tional.
x1:
----
(rite a PL/SQL lo) to %is*la ello (orl%.
or t#is *rogra, $e %o not nee% an lo)al &ariales.
So, $e )an start t#e *rogra using e$or% egin.
0e!ore t#e running t#is *rogra, $e nee% to ae t#e en&ironent &ariale ser&erout*ut to 89.
"o )oan% to ae t#e ser&erout*ut to 89
SQL; Set ser&erout*ut on
0egin
%s
-
8/17/2019 Oracle plsql docs
3/39
Sntax to %e)lare &ariale:
----------------------------
>&ariale; >%atat*e;si?e'
e)lare
a nuer3' nuer3'
) nuer4'
egina :=1@
:=2@
) := a+
%s
-
8/17/2019 Oracle plsql docs
4/39
nter a &alue !or 0:3@
"#e su is ...7@
Pl/SQL *ro)e%ure su))ess!ull )o*lete%.
9ote: B o*erator is use% to a))e*t &alue !ro t#e user.
x 4:------
(rite a PL/SQL lo) to a))e*t e*no an% in)reents #is salar 1@@@.
9ote: "o in)reent t#e salar )#ange t#e &alue' in a tale, $e nee% to use u*%ate )oan%.
e)lare
l
-
8/17/2019 Oracle plsql docs
5/39
e)lare
l
-
8/17/2019 Oracle plsql docs
6/39
x:
------
(rite a PL/SQL 0lo) $#i)# a))e*ts an e*no an% %is*la enae, sal, #ire%ate an% Ho.
%e)lare
l
-
8/17/2019 Oracle plsql docs
7/39
%e)lare
lx)e*tion
-
8/17/2019 Oracle plsql docs
8/39
%e)lare
l
-
8/17/2019 Oracle plsql docs
9/39
&ote.
---------
s $e get t#e out*ut (el)oe, t#is eans t#at *rogra exe)ution is starte%.
s t#e sele)t stt returns ore t#an one ro$, "88
-
8/17/2019 Oracle plsql docs
10/39
en%
/
8ut*ut:
--------
(el)oe
rror
9ote:
------In t#e ao&e *rogra, as $e are %i&i%ing ?ero, KG8
-
8/17/2019 Oracle plsql docs
11/39
egin
%s
-
8/17/2019 Oracle plsql docs
12/39
)reate tale stu%ent sno nuer3' *riar e,
snae &ar)#ar22@',
ars nuer3''
insert a ro$ in t#e tale:
insert into stu%ent &alues 1@1,arun,4@'
)oit
egin
%s
-
8/17/2019 Oracle plsql docs
13/39
e)lare
a nuer4'
egin%s
-
8/17/2019 Oracle plsql docs
14/39
-------------------------------------
"#ese ex)e*tions $ill #a&e ex)e*tio nuer , ut %oes not #a&e ex)e*tion nae.
x:
-------
8G-22C2 ex)e*tion. "#is ex)e*tion is raise% $#en $e tr to %elete !ro ro$ !ro t#e *arent
tale i! )orres*o%ing ro$ exists in t#e )#il% tale.
irst lets estalis# *arent-)#il% relations#i* et$een t$o tales.
)reate tale stu%ent2 sno nuer3' *riar e,snae &ar)#ar22@',
ars nuer3''
insert into stu%ent2 &alues 1@1, arun,4@'insert into stu%ent2 &alues 1@2, &arun,5@'
insert into stu%ent2 &alues 1@3, iran,6@'
)reate tale lirar2 roll
-
8/17/2019 Oracle plsql docs
15/39
raise
-
8/17/2019 Oracle plsql docs
16/39
e)lare
l
-
8/17/2019 Oracle plsql docs
17/39
(el)oe
8G-2@15@ , Sal is too #ig#
rror Ge*orting !un)tions:
------------------------------------
Cursors:-
ursor is a eor lo)ations $#i)# is use% to run SQL )oan%s.
"#ere are t$o t*es )ursors
1' I*li)it ursors
2' x*li)it ursors
1' I*li)it ursors:
----------------------------
ll t#e a)ti&ite% relate% to )ursor lie i' 8*ening t#e )ursor ii' Pro)essing t#e %ata in t#e )ursoriii' )losing t#e )ursor
are %one autoati)all.
en)e t#ese )ursors are )alle% I*li)t )ursors.
I*li)it ursor ttriutes:
---------------------------------------
"#ere are !our I*li)it )ursor attriutes1' SQLEIS8P9
2' SQLE8D9
3' SQLE98"8D9
4' SQLEG8(8D9"
1' SQLEIS8P9:
--------------------------
It is a oolean attriute. It al$as returns !alse. It is not use% in *rograing as it al$as returns!alse.
2' SQLE8D9:-----------------------------
It is a oolean attriute.
Geturns "GD -- i! t#e SQL )oan% e!!e)ts t#e %ata.
Geturns LS -- i! t#e SQL )oan%s %o not e!!e)t t#e %ata.
3' SQLE98"8D9:
--------------------------------It is a oolean attriute
Geturns "GD -- i! t#e SQL )oan% %o not e!!e)t t#e %ata.Geturns LS -- i! t#e SQL )oan% e!!e)ts t#e %ata
9ote: It is exa)tl negation to SQLE8D9
4' SQLEG8(8D9":
-------------------------------Geturns no o! ro$s e!!e)te% t#e SQL )oan%.
-
8/17/2019 Oracle plsql docs
18/39
Dsing SQLE8D9:
-----------------------------
0eginD*%ate e* set sal=2@@@
$#ere e*no=1111
en%/
8ut*ut:
-------------PL/SQL Pro)e%ure su))ess!ull )o*lete%.
0 looing at t#e ao&e essage, $e )annot no$ $#et#er our u*%ate )oan% is e!!e)ting
t#e %ata or not.
"o o&er)oe t#is *role, $e #a&e SQLE8D9 attriute.
a&e a loo at t#is *rogra
0egin
D*%ate e* set sal=2@@@$#ere e*no=1111i! SQLE8D9 t#en
%s
-
8/17/2019 Oracle plsql docs
19/39
------------
D*%ate is !aile%.
PL/SQL Pro)e%ure su))ess!ull )o*lete%.
Dsing SQLEG8(8D9":
-----------------------------------
SQLEG8(8D9" attriute is use% to !in% t#e no o! ro$s e!!e)te% SQL )oan%.
eginu*%ate e* set sal=2@@@
$#ere %e*tno=1@
%s
-
8/17/2019 Oracle plsql docs
20/39
"#ere are !our ex*li)it )ursor attriutes
1' EIS8P92' E8D9
3' E98"8D9
4' EG8(8D9"
1' EIS8P9:
--------------------
It is a oolean attriute.Geturns "GD -- i! t#e )ursor is o*en
Geturns LS -- i! t#e )ursor is )lose%
2' E8D9:------------------
It is a oolean attriute
Geturns "GD -- i! t#e !et)# stt is su))ess!ullGeturns LS -- i! t#e !et)# stt !ails
3' E98"8D9:--------------------------It is oolean attriute
Geturns "GD -- i! t#e !et)# stt !ails.
Geturns LS -- i! t#e !et)# stt is su))ess!ull
9ote: 1' It is exa)tl o**osite to E8D9 attriute
2' "#is attriute is use% to rea t#e loo* o! t#e !et)# stt.
4' EG8(8D9":---------------------------
Geturns no o! ro$s !et)#e% t#e !et)# stt.
xa*le o! x*li)it )ursor:-----------------------------------
(rite a PL/SQL lo) to %is*la enae an% sal o! e*loees $oring in %e*tno no
e)lare
)ursor )1
is sele)t enae , sal !ro e*$#ere %e*tno=1@
l
-
8/17/2019 Oracle plsql docs
21/39
en%
/
8ut*ut:
------------
LG 245@I9 5@@@
JILLG 13@@
Pl/SQL Pro)eu%ure su))ess!ull )o*lete%.
x2: (rite a PL/SQL *ro)e%ure to %is*la %nae , lo) !ro %e*t tale
e)lare)ursor )1
is sele)t %nae , lo) !ro %e*t
l
-
8/17/2019 Oracle plsql docs
22/39
x:
----------
(rite a PL/SQL lo) $#i)# %is*la enae an% sal o! e*loees $oring in %e*tno 1@
e)lare
)ursor )1
is sele)t enae , sal !ro e*$#ere %e*tno=1@
egin
!or e*
-
8/17/2019 Oracle plsql docs
23/39
Pro)e%ure )reate%.
"o exe)ute t#e *ro)e%ure:----------------------------
xe) )oan% is use% to exe)ute t#e *ro)e%ure.
SQL; xe) *1ello (orl%
*ro)e%ure )an #a&e t#ree t*es o! *araeters.
1' I9 Paraeter 2' 8D" Paraeter
3' I9 8D" Paraeter
In Paraeters are use% to a))e*t &alues !ro t#e user.
x 2:
---------reate a *ro)e%ure $#i)# a))e*ts t$o nuers an% %is*la its su.
)reate or re*la)e *ro)e%ure a%%
-
8/17/2019 Oracle plsql docs
24/39
SQL; exe) in)
is
)ursor )1is sele)t enae,sal !ro e*
$#ere %e*tno = l
-
8/17/2019 Oracle plsql docs
25/39
x 6:
--------
(e )an )all a *ro)e%ure !ro anot#er *ro)e%ure.
)reate or re*la)e *ro)e%ure %eo1
is
egin%s
-
8/17/2019 Oracle plsql docs
26/39
(e get error in!oration.
Ge)ti! t#e error an% re )o*ile t#e )o%e to )reate *ro)e%ure su))ess!ull.
x C:
---------
Su *ro)e%ure: *ro)e%ure insi%e anot#er *ro)e%ure is )alle% as
Su *ro)e%ure.
)reate or re*la)e *ro)e%ure test
is *ro)e%ure sa*le
is
egin
%s
-
8/17/2019 Oracle plsql docs
27/39
Ste* 1: reate in% &ariale
Ste* 2: xe)ute t#e *ro)e%ure using in% &ariale
Ste* 3: Print t#e &alue in t#e in% &ariale.
Ste* 1: )reating 0in% &ariale
SQL; &ariale g
-
8/17/2019 Oracle plsql docs
28/39
SQL; sele)t oHe)t
-
8/17/2019 Oracle plsql docs
29/39
sele)t text !ro user
%e)lare
n nuer5' egin
n := a%%
en%
/
-
8/17/2019 Oracle plsql docs
30/39
(e )an in&oe !un)tions !ro sele)t stt:
----------------------------------------------
sele)t a%%
x2:
------
)reate a !un)tion $#i)# a))e*ts sal an% returns tax &alue 1@E o! sal is tax'.
)reate or re*la)e !un)tion )al
return nuer
is
) nuer5' egin
insert into %e*t &alues 5@,G,FG0'
) :=a+
return )
en%/
"#e ao&e !un)tion gets )reate%.
"#e ao&e !un)tion )an e in&oe% !ro t#e *l/SQL lo)
%e)lare
n nuer5' egin
n := a%%
en%
/
-
8/17/2019 Oracle plsql docs
31/39
0ut, $e )annot in&oe t#e ao&e !un)tion using sele)t stt.
ex:
sele)t a%%
-
8/17/2019 Oracle plsql docs
32/39
It )ontains %e!inition o! su *rogras
Sntax:----------
)reate or re*la)e *a)age o% >*a)age
-
8/17/2019 Oracle plsql docs
33/39
l
-
8/17/2019 Oracle plsql docs
34/39
egin
) := a+
%s
-
8/17/2019 Oracle plsql docs
35/39
"riggering e&ents: Insert, D*%ate, elete
"rigger tiings: 0e!ore, a!ter, instea% o!
Sntax:
------
reate or re*la)e trigger >trgtiing; >e&ent; on >tale
-
8/17/2019 Oracle plsql docs
36/39
ex:
--
D*%ate %e*t set lo)=LI
$#ere %e*tno =1@
"#an Fou1 Go$ u*%ate%.
%elete !ro %e*t $#ere %e*tno=5@
"#an ou1 Go$ %elete%.
In t#e ao&e *rogra, $e get t#e sae essage !or all t#e e&ents.
(e )an also #a&e %i!!erent essages to e %is*lae%, asing on t#e e&ents.
x:
------
)reate or re*la)e trigger trg1
a!ter insert or u*%ate or %elete on %e*t egin
i! inserting t#en
%s
-
8/17/2019 Oracle plsql docs
37/39
egin
%s
-
8/17/2019 Oracle plsql docs
38/39
)reate or re*la)e trigger trg1
e!ore %elete on e* !or ea)# ro$
egin
i! :8L.O80=PGSI9" t#en
raise
-
8/17/2019 Oracle plsql docs
39/39
&ent:
------
insert into e*