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

