Oracle plsql docs

download Oracle plsql docs

of 39

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*