PL /SQL Procedures

En subprogram
er et program enhet /modul som utfører en bestemt oppgave. Disse underprogrammer er kombinert for å danne større programmer. Dette er i utgangspunktet kalt "Modular design '. Et underprogram kan påberopes av en annen underprogram eller program som kalles kalle programmet

Et underprogram kan opprettes.

  • På skjemaet nivå

    Inne i en pakke

    Inne i en PL /SQL blokk

    Et skjema nivå underprogram er en stående subprogram Anmeldelser . Det er opprettet med CREATE PROSEDYRE eller CREATE FUNCTION. Den er lagret i databasen og kan slettes med DROP PROSEDYRE eller DROP FUNCTION.

    Et underprogram laget inne i en pakke er en pakket subprogram
    . Den er lagret i databasen og kan slettes bare når pakken er slettet med DROP PAKKE uttalelse. Vi vil diskutere pakker i kapitlet 'PL /SQL - Pakker'.

    PL /SQL programmene er oppkalt PL /SQL-blokker som kan påberopes med et sett med parametre. PL /SQL gir to typer underprogrammer:

    Funksjoner
    . Disse underprogrammer returnerer en enkelt verdi, som hovedsakelig brukes til å beregne og returnere en verdi

    Prosedyrer
    . disse subprograms ikke returnerer en verdi direkte, som hovedsakelig brukes til å utføre en handling

    Dette kapittelet kommer til å dekke viktige aspekter ved en PL /SQL prosedyre Hotell og vil vi dekke PL /SQL-funksjon
    i neste kapittel.

    Deler av en PL /SQL subprogram

    Hver PL /SQL subprogram har et navn, og kan ha en parameter liste. Som anonym PL /SQL blokker og, de navngitte blokker en underprogrammer vil også ha følgende tre deler:
    S.N.
    Parts & Beskrivelse
    en Deklarativ Del

    Det er en valgfri del. Men det deklarative del for et underprogram starter ikke med DECLARE nøkkelordet. Den inneholder erklæringer typer, pekere, konstanter, variabler, unntak, og nestet underprogrammer. Disse elementene er lokale for den underprogram og opphøre å eksistere når subprogram full henrettelsen.
    2 Kjørbar Del

    Dette er en obligatorisk del og inneholder uttalelser som utfører den angitte handlingen.
    3 unntakshåndtering

    Dette er igjen en valgfri del. Den inneholder koden som behandler kjøre-time feil.

    Opprette en prosedyre

    En prosedyre er opprettet med CREATE OR REPLACE PROSEDYRE uttalelse. Forenklet syntaks for CREATE OR REPLACE PROSEDYRE utsagnet er som følger:
    CREATE [OR REPLACE]-prosedyre prosedyre [(parameternavn [IN | OUT | IN OUT] skriver [...])] {IS | AS} BEGIN < procedure_body > END prosedyrenavn;.

    Hvor, etter

    prosedyrenavn
    angir navnet på prosedyren

    [OR BYTT] alternativet kan modifisere en eksisterende prosedyre.

    Den valgparameterlisten inneholder navn, modus og typer parametere. I representerer denne verdien vil bli overlevert fra utsiden og OUT representerer at denne parameteren vil bli brukt til å returnere en verdi utenfor prosedyren.

  • prosedyrekroppen
    inneholder kjørbar del.

    AS nøkkelordet brukes i stedet for IS søkeord for å lage en frittstående prosedyre.

    Eksempel: «Hello World '

    Følgende eksempel oppretter en enkel prosedyre som viser strengen på skjermen når henrettet
    CREATE OR REPLACE PROSEDYRE greetingsASBEGIN dbms_output.put_line ('Hello World!'); END; /

    Når ovenfor koden kjøres ved hjelp av SQL teksten, det vil gi følgende resultat:.
    . Prosedyre opprettet
    Utføre en frittstående prosedyre

    En frittstående prosedyre kan kalles på to måter:

    Bruke EXECUTE søkeord

    Ringe navnet på prosedyren fra en PL /SQL blokk

    Ovennevnte prosedyre som heter 'hilsener' kan kalles med EXECUTE søkeord som:
    EXECUTE hilsener;

    Listen samtalen ville vise:
    Hei WorldPL /SQL-prosedyren ble fullført

    Prosedyren kan også velges fra en annen PL /SQL blokk.
    BEGIN hilsener, END; /

    Listen samtalen ville vise .:
    Hei WorldPL /SQL-prosedyren ble fullført
    Slette en frittstående prosedyre

    En frittstående prosedyre slettes med DROP PROSEDYRE uttalelse. Syntax for å slette en prosedyre er:
    DROP PROSEDYRE prosedyrenavn;

    Så du kan slippe hilsener
    prosedyren ved hjelp av følgende utsagn:
    DROP PROSEDYRE hilsener;
    Parameter Modes i PL /SQL delprogrammer
    SN
    Parameter Mode & Beskrivelse
    en I

    En IN parameter kan du passere en verdi til subprogram. Det er en skrivebeskyttet parameter
    . Inne i subprogram, fungerer et IN parameter som en konstant. Det kan ikke tildeles en verdi. Du kan sende en konstant, bokstavelig, initialisert variabel, eller et uttrykk som i parameter. Du kan også initialisere det til en standardverdi; men i så tilfelle er det utelatt fra underprogrammet samtalen. Det er standardmåten parameteroverføring. Parametere sendes som referanse.
    2 OUT

    En OUT parameter returnerer en verdi til å kalle programmet. Inne i subprogram, fungerer en OUT parameter som en variabel. Du kan endre verdien og referere til verdien etter å tildele den. Den faktiske parameteren må være variabel og det er vedtatt av verdi
    .
    2 INN UT

    En INN UT parameter passerer en initial verdi til et underprogram og returnerer en oppdatert verdi til den som ringer. Det kan tilordnes en verdi og verdien kan leses.

    Selve parameter tilsvarer en IN OUT formell parameter må være en variabel, ikke en konstant eller et uttrykk. Formell parameter må tilordnes en verdi. Faktisk parameter er vedtatt av verdi

    IN &.; OUT Mode Eksempel 1

    Dette programmet finner minst to verdier, her prosedyren tar to tall ved hjelp av IN-modus og returnerer sitt minimum ved hjelp OUT parametere
    ERKLÆRER et tall.; b nummer, c nummer, PROSEDYRE findMin (x i antall, y i antall, z OUT nummer) ISBEGIN IF x < y SÅ z: = x; ELSE z: = y; END IF; END; BEGIN a: = 23; b: = 45; findMin (a, b, c); dbms_output.put_line ('Minimum (23, 45): «|| c); END; /

    Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
    Minimum (23, 45 ): 23PL /SQL-prosedyren ble fullført
    IN &. OUT Mode Eksempel 2

    Denne prosedyren beregner kvadratet av verdien av en vedtatt verdi. Dette eksempelet viser hvordan vi kan bruke samme parameter for å godta en verdi og deretter returnere annet resultat
    erklære en nummer, PROSEDYRE squareNum (x IN OUT nummer) ISBEGIN x:. = X * x; END; BEGIN a: = 23; squareNum (a); dbms_output.put_line ('Square fra (23):' || a); END; /

    Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
    Square of (23): 529PL /SQL-prosedyren ble fullført
    Metoder for Passing Parametere

    Aktuelle parametere kan sendes på tre måter:.

    Posisjonsnotasjon

    Oppkalt notasjon

    Mixed notasjon

    Oppstillingsnotasjon

    I posisjonsnotasjon, kan du ringe prosedyren som:
    findMin (a, b, c, d);

    I posisjonsnotasjon, den første aktuelle parameter er substituert for den første formell parameter; den andre aktuelle parameter er substituert for den andre formell parameter, og så videre. I så fall er en substituert for x, er b i stedet for y, er c i stedet for z, og d er substituert for m.

    oppkalt NOTASJON

    I oppkalt notasjon, er den faktiske parameter i forbindelse med den formelle parameteren ved hjelp symbol pilen (= >). Så prosedyrekallet vil se ut:
    findMin (x = > en, y = > b, z = > c, m = > d);
    MIXED NOTASJON

    I blandet notasjon, kan du blande både notasjoner i prosedyrekall; bør imidlertid posisjonsnotasjon foran den navngitte notasjon.

    Følgende samtale er lovlig:
    findMin (a, b, c, m = > d);

    Men dette er ikke lovlig:
    findMin (x = > en, b, c, d);



    Previous: