I denne opplæringen skal du se den detaljerte beskrivelsen av hvordan du oppretter og utfører de nevnte blokkene (prosedyrer og funksjoner).
Prosedyrer og funksjoner er underprogrammene som kan opprettes og lagres i databasen som databaseobjekter. De kan også kalles eller henvises i de andre blokkene.
Bortsett fra dette, vil vi dekke de store forskjellene mellom disse to delprogrammene. Vi skal også diskutere de innebygde Oracle-funksjonene.
I denne Oracle Stored Procedure-opplæringen vil du lære-
- Terminologier i PL / SQL-underprogrammer
- Hva er prosedyre i PL / SQL?
- Hva er funksjon?
- Likheter mellom prosedyre og funksjon
- Prosedyre vs. Funksjon: Viktige forskjeller
- Innebygde funksjoner i PL / SQL
Terminologier i PL / SQL-underprogrammer
Før vi lærer om PL / SQL-underprogrammer, vil vi diskutere de forskjellige terminologiene som er del av disse underprogrammene. Nedenfor er terminologiene vi skal diskutere.
Parameter:
Parameteren er variabel eller plassholder for en hvilken som helst gyldig PL / SQL-datatype som PL / SQL-underprogrammet utveksler verdiene med hovedkoden gjennom. Denne parameteren gjør det mulig å gi input til underprogrammene og trekke ut fra disse underprogrammene.
- Disse parametrene bør defineres sammen med underprogrammene på tidspunktet for opprettelsen.
- Disse parametrene er inkludert i anropsuttalelsen til disse underprogrammene for å samhandle verdiene med underprogrammene.
- Datatypen til parameteren i underprogrammet og anropsuttalelsen skal være den samme.
- Størrelsen på datatypen skal ikke nevnes på tidspunktet for parameterdeklarasjonen, siden størrelsen er dynamisk for denne typen.
Basert på deres formål er parametere klassifisert som
- IN Parameter
- OUT Parameter
- IN UT Parameter
IN Parameter:
- Denne parameteren brukes til å gi input til underprogrammene.
- Det er en skrivebeskyttet variabel i underprogrammene. Verdiene deres kan ikke endres i underprogrammet.
- I kallesetningen kan disse parametrene være en variabel eller en bokstavelig verdi eller et uttrykk, for eksempel kan det være det aritmetiske uttrykket som '5 * 8' eller 'a / b' der 'a' og 'b' er variabler .
- Som standard er parameterne av IN-type.
OUT Parameter:
- Denne parameteren brukes til å få utgang fra underprogrammene.
- Det er en lese-skrive-variabel inne i underprogrammene. Verdiene deres kan endres i underprogrammene.
- I anropsuttalelsen bør disse parametrene alltid være en variabel for å holde verdien fra gjeldende underprogrammer.
IN OUT Parameter:
- Denne parameteren brukes både for å gi input og for å få output fra underprogrammene.
- Det er en lese-skrive-variabel inne i underprogrammene. Verdiene deres kan endres i underprogrammene.
- I anropsuttalelsen bør disse parametrene alltid være en variabel for å holde verdien fra underprogrammene.
Disse parametertypene bør nevnes når du oppretter delprogrammene.
KOMME TILBAKE
RETURN er nøkkelordet som instruerer kompilatoren om å bytte kontrollen fra underprogrammet til den kallende uttalelsen. I underprogram betyr RETURN ganske enkelt at kontrollen må gå ut av underprogrammet. Når kontrolleren finner RETURN-nøkkelordet i underprogrammet, blir koden etter dette hoppet over.
Normalt vil foreldre- eller hovedblokk kalle underprogrammene, og deretter vil kontrollen skifte fra de overordnede blokkeringen til de kallte underprogrammene. RETURN i underprogrammet vil returnere kontrollen til foreldreblokken. I tilfelle funksjoner returnerer RETURN-setningen også verdien. Datatypen for denne verdien nevnes alltid på tidspunktet for funksjonserklæringen. Datatypen kan være av en hvilken som helst gyldig PL / SQL-datatype.
Hva er prosedyre i PL / SQL?
En prosedyre i PL / SQL er en underprogramenhet som består av en gruppe PL / SQL-setninger som kan kalles med navn. Hver prosedyre i PL / SQL har sitt eget unike navn som det kan henvises til og kalles til. Denne underprogramenheten i Oracle-databasen er lagret som et databaseobjekt.
Merk: Underprogram er ikke annet enn en prosedyre, og det må opprettes manuelt i henhold til kravet. Når de er opprettet, lagres de som databaseobjekter.
Nedenfor er kjennetegnene til Procedure-underprogramenheten i PL / SQL:
- Prosedyrer er frittstående blokker for et program som kan lagres i databasen.
- Anrop til disse PLSQL-prosedyrene kan gjøres ved å referere til navnet deres for å utføre PL / SQL-setningene.
- Den brukes hovedsakelig til å utføre en prosess i PL / SQL.
- Den kan ha nestede blokker, eller den kan defineres og nestes i de andre blokkene eller pakkene.
- Den inneholder erklæringsdel (valgfri), utførelsesdel, unntakshåndteringsdel (valgfri).
- Verdiene kan overføres til Oracle-prosedyren eller hentes fra prosedyren gjennom parametere.
- Disse parametrene bør inkluderes i kallet.
- En prosedyre i SQL kan ha en RETURN-setning for å returnere kontrollen til anropsblokken, men den kan ikke returnere noen verdier gjennom RETURN-setningen.
- Prosedyrer kan ikke kalles direkte fra SELECT-setninger. De kan ringes fra en annen blokk eller gjennom EXEC-nøkkelord.
Syntaks:
CREATE OR REPLACE PROCEDURE( … )[ IS | AS ] BEGIN EXCEPTION END;
- CREATE PROCEDURE instruerer kompilatoren om å opprette en ny prosedyre i Oracle. Søkeord 'ELLER ERSTATT' instruerer kompileringen om å erstatte den eksisterende prosedyren (hvis noen) med den nåværende.
- Prosedyrens navn skal være unikt.
- Nøkkelordet 'IS' vil bli brukt når den lagrede prosedyren i Oracle er nestet i noen andre blokker. Hvis prosedyren er frittstående, vil 'AS' brukes. Bortsett fra denne kodingsstandarden, har begge samme betydning.
Eksempel 1: Opprette prosedyre og ringe den ved hjelp av EXEC
I dette eksemplet skal vi lage en Oracle-prosedyre som tar navnet som input og skriver velkomstmeldingen ut. Vi skal bruke EXEC-kommandoen for å ringe prosedyren.
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)ISBEGINdbms_output.put_line (‘Welcome '|| p_name);END;/EXEC welcome_msg (‘Guru99’);
Kode Forklaring:
- Kodelinje 1 : Opprette prosedyren med navnet 'welcome_msg' og med en parameter 'p_name' av 'IN' -typen.
- Kodelinje 4 : Skrive ut velkomstmeldingen ved å sammenkoble inngangsnavnet.
- Prosedyren er kompilert.
- Kodelinje 7 : Anrope prosedyren ved hjelp av EXEC-kommandoen med parameteren 'Guru99'. Prosedyren utføres, og meldingen skrives ut som "Welcome Guru99".
Hva er funksjon?
Funksjoner er et frittstående PL / SQL-underprogram. I likhet med PL / SQL-prosedyren har funksjoner et unikt navn som det kan henvises til. Disse lagres som PL / SQL-databaseobjekter. Nedenfor er noen av funksjonene til funksjonene.
- Funksjoner er en frittstående blokk som hovedsakelig brukes til beregningsformål.
- Funksjon bruk RETURN-nøkkelordet for å returnere verdien, og datatypen for dette defineres på tidspunktet for opprettelsen.
- En funksjon skal enten returnere en verdi eller heve unntaket, dvs. retur er obligatorisk i funksjoner.
- Funksjon uten DML-setninger kan kalles direkte i SELECT-spørring, mens funksjonen med DML-operasjon bare kan kalles fra andre PL / SQL-blokker.
- Den kan ha nestede blokker, eller den kan defineres og nestes i de andre blokkene eller pakkene.
- Den inneholder erklæringsdel (valgfri), utførelsesdel, unntakshåndteringsdel (valgfri).
- Verdiene kan overføres til funksjonen eller hentes fra prosedyren gjennom parametrene.
- Disse parametrene bør inkluderes i kallet.
- En PLSQL-funksjon kan også returnere verdien gjennom andre OUT-parametere enn å bruke RETURN.
- Siden den alltid vil returnere verdien, følger den alltid med oppdragsoperatøren for å fylle ut variablene i anropsuttalelse.
Syntaks
CREATE OR REPLACE FUNCTION( )RETURN [ IS | AS ] BEGIN EXCEPTION END;
- CREATE FUNCTION instruerer kompilatoren om å opprette en ny funksjon. Nøkkelordet 'ELLER ERSTATT' instruerer kompilatoren om å erstatte den eksisterende funksjonen (hvis noen) med den nåværende.
- Funksjonsnavnet skal være unikt.
- RETURN datatype bør nevnes.
- Nøkkelordet 'IS' vil bli brukt når prosedyren er nestet i noen andre blokker. Hvis prosedyren er frittstående, vil 'AS' brukes. Bortsett fra denne kodingsstandarden, har begge samme betydning.
Eksempel1: Opprette funksjon og ringe den ved hjelp av anonym blokk
I dette programmet skal vi lage en funksjon som tar navnet som input og returnerer velkomstmeldingen som output. Vi skal bruke anonym blokk og velg uttalelse for å ringe funksjonen.
CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2ISBEGINRETURN (‘Welcome ‘|| p_name);END;/DECLARElv_msg VARCHAR2(250);BEGINlv_msg := welcome_msg_func (‘Guru99’);dbms_output.put_line(lv_msg);END;SELECT welcome_msg_func(‘Guru99:) FROM DUAL;
Kode Forklaring:
- Kodelinje 1 : Opprette Oracle-funksjonen med navnet 'welcome_msg_func' og med en parameter 'p_name' av 'IN' -typen.
- Kodelinje 2 : erklærer returtypen som VARCHAR2
- Kodelinje 5 : Returnerer den sammenkoblede verdien 'Velkommen' og parameterverdien.
- Kodelinje 8 : Anonym blokk for å ringe til funksjonen ovenfor.
- Kodelinje 9 : Erklærer variabelen med datatype samme som returdatatypen til funksjonen.
- Kodelinje 11 : Kaller funksjonen og fyller tilbake verdien til variabelen 'lv_msg'.
- Kodelinje 12 : Skrive ut variabelverdien. Resultatet du får her er "Welcome Guru99"
- Kodelinje 14 : Ringer den samme funksjonen gjennom SELECT-setningen. Returverdien rettes direkte til standardutgangen.
Likheter mellom prosedyre og funksjon
- Begge kan kalles fra andre PL / SQL-blokker.
- Hvis unntaket som er reist i underprogrammet ikke håndteres i delen for unntakshåndtering av underprogrammet, vil det spre seg til anropsblokken.
- Begge kan ha så mange parametere som nødvendig.
- Begge behandles som databaseobjekter i PL / SQL.
Prosedyre vs. Funksjon: Viktige forskjeller
Fremgangsmåte | Funksjon |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Innebygde funksjoner i PL / SQL
PL / SQL inneholder forskjellige innebygde funksjoner for å jobbe med strenger og datatype. Her skal vi se de vanlige funksjonene og bruken av dem.
Konverteringsfunksjoner
Disse innebygde funksjonene brukes til å konvertere en datatype til en annen datatype.
Funksjonsnavn | Bruk | Eksempel |
---|---|---|
TO_CHAR | Konverterer den andre datatypen til karakterdatatypen | TO_CHAR (123); |
TO_DATE (streng, format) | Konverterer gitt streng til dags dato. Strengen skal samsvare med formatet. | TO_DATE ('2015-JAN-15', 'ÅÅÅÅ-MÅN-DD'); Utgang: 15/1/2015 |
TO_NUMBER (tekst, format) | Konverterer teksten til nummertype for det gitte formatet. Informat '9' angir antall sifre | Velg TO_NUMBER ('1234', '9999') fra dual; Utgang: 1234 Velg TO_NUMBER ('1,234,45', '9,999,99') fra dual; Utgang: 1234 |
Strengfunksjoner
Dette er funksjonene som brukes på karakterdatatypen.
Funksjonsnavn | Bruk | Eksempel |
---|---|---|
INSTR (tekst, streng, start, forekomst) | Gir posisjonen til bestemt tekst i den gitte strengen.
| Velg INSTR ( 'AIRPLANE', 'E', 2,1) fra dual Utgang : 2 Velg INSTR ( 'AIRPLANE', 'E', 2,2) fra to utganger: 9 (2 nd forekomst av E) |
SUBSTR (tekst, start, lengde) | Gir understrengingsverdien til hovedstrengen.
| velg substr ('fly', 1,7) fra dual Output : aeropla |
ØVRE (tekst) | Returnerer store bokstaver for den oppgitte teksten | Velg øvre ('guru99') fra dual; Utgang : GURU99 |
NEDRE (tekst) | Returnerer små bokstaver i den angitte teksten | Velg lavere ('fly') fra dobbelt; Utgang : fly |
INITCAP (tekst) | Returnerer gitt tekst med startbokstaven i store bokstaver. | Velg ('guru99') fra dual Output : Guru99 Select ('my story') fra dual Output : My Story |
LENGDE (tekst) | Returnerer lengden på den gitte strengen | Velg LENGDE ('guru99') fra dual; Utgang : 6 |
LPAD (tekst, lengde, pad_char) | Pads strengen på venstre side for den angitte lengden (total streng) med det gitte tegnet | Velg LPAD ('guru99', 10, '$') fra dual; Produksjon : $$$$ guru99 |
RPAD (tekst, lengde, pad_char) | Pads strengen på høyre side for den angitte lengden (total streng) med det gitte tegnet | Velg RPAD ('guru99', 10, '-') fra dual Output : guru99 ---- |
LTRIM (tekst) | Beskjærer det ledende hvite rommet fra teksten | Velg LTRIM ('Guru99') fra dual; Utgang : Guru99 |
RTRIM (tekst) | Beskjærer det etterfølgende hvite rommet fra teksten | Velg RTRIM ('Guru99') fra dual; Utgang ; Guru99 |
Datofunksjoner
Dette er funksjoner som brukes til å manipulere med datoer.
Funksjonsnavn | Bruk | Eksempel |
---|---|---|
ADD_MONTHS (dato, antall måneder) | Legger til de gitte månedene til datoen | ADD_MONTH ('2015-01-01', 5); Utgang : 05/01/2015 |
SYSDATE | Returnerer gjeldende dato og klokkeslett for serveren | Velg SYSDATE fra dual; Utgang : 10.10.2015 14:11:43 |
TRUNC | Runde av datovariabelen til den laveste mulige verdien | velg sysdate, TRUNC (sysdate) fra dual; Utgang : 04.10.2015 14:12:39 PM 04.10.2015 |
RUND | Avrunder datoen til nærmeste grense, enten høyere eller lavere | Velg sysdate, RUND (sysdate) fra dobbel Utgang : 10.10.2015 14:14:34 PM 10/5/2015 |
MÅNEDER_BETWEEN | Returnerer antall måneder mellom to datoer | Velg MONTHS_BETWEEN (sysdate + 60, sysdate) fra dobbel utgang : 2 |
Sammendrag
I dette kapittelet har vi lært følgende.
- Hvordan lage prosedyre og forskjellige måter å kalle det på
- Hvordan lage funksjon og forskjellige måter å ringe den på
- Likheter og forskjeller mellom prosedyre og funksjon
- Parametere og RETURN vanlige terminologier i PL / SQL-underprogrammer
- Vanlige innebygde funksjoner i Oracle PL / SQL