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.
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
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);