Oracle PL / SQL tárolt eljárás & Funkciók példákkal

Tartalomjegyzék:

Anonim

Ebben az oktatóanyagban megismerheti a megnevezett blokkok (eljárások és függvények) létrehozásának és végrehajtásának részletes leírását.

Az Eljárások és függvények azok az alprogramok, amelyek létrehozhatók és elmenthetők az adatbázisban adatbázis objektumokként. Hívhatók vagy hivatkozhatók a többi blokkon belül is.

Ettől eltekintve kitérünk a két alprogram közötti főbb különbségekre. Ezenkívül megvitatjuk az Oracle beépített funkcióit.

Ebben az Oracle Stored Procedure oktatóanyagban megismerheti

  • Terminológiák a PL / SQL alprogramokban
  • Mi az eljárás a PL / SQL-ben?
  • Mi a funkció?
  • Az eljárás és a funkció közötti hasonlóságok
  • Eljárás Vs. Funkció: Főbb különbségek
  • Beépített funkciók PL / SQL-ben

Terminológiák a PL / SQL alprogramokban

Mielőtt megismernénk a PL / SQL alprogramokat, megvitatjuk a különféle terminológiákat, amelyek ezen alprogramok részét képezik. Az alábbiakban bemutatjuk azokat a terminológiákat, amelyeket megvitatni fogunk.

Paraméter:

A paraméter bármely érvényes PL / SQL adattípus változója vagy helyőrzője, amelyen keresztül a PL / SQL alprogram kicseréli az értékeket a fő kóddal. Ez a paraméter lehetővé teszi az alprogramok bevitelét és az ezekből való kivonatot.

  • Ezeket a paramétereket a létrehozáskor az alprogramokkal együtt kell meghatározni.
  • Ezeket a paramétereket az alprogramok hívó utasításai tartalmazzák, hogy kölcsönhatásba lépjenek az értékekkel az alprogramokkal.
  • Az alprogramban a paraméter adattípusának és a hívó utasításnak meg kell egyeznie.
  • Az adattípus méretét nem szabad megemlíteni a paraméterek deklarálásakor, mivel a méret dinamikus ehhez a típushoz.

Céljuk alapján a paramétereket a következők közé sorolják

  1. IN paraméter
  2. OUT paraméter
  3. IN OUT paraméter

IN paraméter:

  • Ez a paraméter az alprogramok bevitelére szolgál.
  • Ez egy csak olvasható változó az alprogramokon belül. Értékeik az alprogramon belül nem módosíthatók.
  • A hívó utasításban ezek a paraméterek lehetnek változó vagy literális érték vagy kifejezés, például számtani kifejezés, például '5 * 8' vagy 'a / b', ahol 'a' és 'b' változók .
  • Alapértelmezés szerint a paraméterek IN típusúak.

OUT paraméter:

  • Ez a paraméter az alprogramok kimenetének lekérésére szolgál.
  • Ez egy írási-írási változó az alprogramokon belül. Értékeik az alprogramokon belül megváltoztathatók.
  • A hívó utasításban ezeknek a paramétereknek mindig változónak kell lenniük, hogy megtartsák az aktuális alprogramok értékét.

IN OUT paraméter:

  • Ezt a paramétert használjuk mind bemenet megadásához, mind kimenet megszerzéséhez az alprogramokból.
  • Ez egy írási-írási változó az alprogramokon belül. Értékeik az alprogramokon belül megváltoztathatók.
  • A hívó utasításban ezeknek a paramétereknek mindig változónak kell lenniük, hogy megtartsák az alprogramok értékét.

Ezeket a paramétertípusokat meg kell említeni az alprogramok létrehozásakor.

VISSZATÉRÉS

A RETURN az a kulcsszó, amely arra utasítja a fordítót, hogy kapcsolja át a vezérlést az alprogramról a hívó utasításra. Az alprogramban a RETURN egyszerűen azt jelenti, hogy a vezérlésnek ki kell lépnie az alprogramból. Amint a vezérlő megtalálja a RETURN kulcsszót az alprogramban, az ezt követő kód átugrásra kerül.

Normális esetben a szülő vagy a fő blokk meghívja az alprogramokat, majd a vezérlés átkerül az említett szülő blokkról a hívott alprogramokra. Az RETURN az alprogramban visszaadja a vezérlést a szülőblokkjuknak. Funkciók esetén a RETURN utasítás is visszaadja az értéket. Ennek az értéknek az adattípusát mindig megemlítik a függvény deklarálásakor. Az adattípus bármilyen érvényes PL / SQL adattípus lehet.

Mi az eljárás a PL / SQL-ben?

A Eljárás a PL / SQL egy alprogram egység, amely egy csoport PL / SQL, hogy lehet nevezni a nevét. A PL / SQL minden egyes eljárásának megvan a maga egyedi neve, amelyre hivatkozni lehet és meghívható. Ez az alprogram egység az Oracle adatbázisban adatbázis objektumként van tárolva.

Megjegyzés: Az alprogram nem más, mint eljárás, és manuálisan kell létrehozni a követelményeknek megfelelően. A létrehozás után adatbázis-objektumokként tárolódnak.

Az alábbiakban bemutatjuk az eljárás alprogram egység jellemzőit a PL / SQL-ben:

  • Az eljárások a program önálló blokkjai, amelyek az adatbázisban tárolhatók.
  • Ezekre a PLSQL eljárásokra a nevükre hivatkozva lehet felhívni a PL / SQL utasítások végrehajtásához.
  • Főleg egy folyamat végrehajtására használják PL / SQL-ben.
  • Lehet beágyazott blokkja, vagy definiálható és beágyazható a többi blokkba vagy csomagba.
  • Tartalmaz deklarációs részt (opcionális), végrehajtási részt, kivételkezelő részt (opcionális).
  • Az értékeket át lehet adni az Oracle eljárásba, vagy paraméterek útján lehívhatók az eljárásból.
  • Ezeket a paramétereket bele kell foglalni a hívó utasításba.
  • Egy SQL eljárásnak lehet egy RETURN utasítása, amely visszaadja a vezérlőt a hívó blokknak, de a RETURN utasítással nem adhat vissza értékeket.
  • Az eljárásokat nem lehet közvetlenül a SELECT utasításokból meghívni. Meghívhatók egy másik blokkból vagy az EXEC kulcsszóval.

Szintaxis:

CREATE OR REPLACE PROCEDURE
(
… )[ IS | AS ]BEGINEXCEPTIONEND;
  • A CREATE PROCEDURE utasítja a fordítót, hogy hozzon létre új eljárást az Oracle-ben. A „VAGY CSERE” kulcsszó arra utasítja a fordítást, hogy a meglévő eljárást (ha van) cserélje le az aktuálisra.
  • Az eljárás nevének egyedinek kell lennie.
  • Az „IS” kulcsszót akkor kell használni, ha az Oracle-ben tárolt eljárás be van ágyazva néhány másik blokkba. Ha az eljárás önálló, akkor az „AS” lesz használva. Ezen a kódolási szabványon kívül mindkettőnek ugyanaz a jelentése.

1. példa: Eljárás létrehozása és meghívása az EXEC használatával

Ebben a példában egy olyan Oracle eljárást fogunk létrehozni, amely a nevet bemenetnek veszi, és az üdvözlő üzenetet kimenetként kinyomtatja. Az eljárás meghívásához az EXEC parancsot fogjuk használni.

CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)ISBEGINdbms_output.put_line (‘Welcome '|| p_name);END;/EXEC welcome_msg (‘Guru99’);

Kód Magyarázat:

  • 1. kódsor: Az eljárás létrehozása „welcome_msg” névvel és egy „IN” típusú „p_name” paraméterrel.
  • 4. kódsor: Az üdvözlő üzenet kinyomtatása a bemenet nevének összefűzésével.
  • Az eljárás összeállítása sikeres.
  • 7. kódsor: Az eljárás meghívása az EXEC paranccsal a „Guru99” paraméterrel. Az eljárás végrehajtásra kerül, és az üzenet "Welcome Guru99" néven kerül kinyomtatásra.

Mi a funkció?

A Funkciók önálló PL / SQL alprogram. A PL / SQL eljáráshoz hasonlóan a függvényeknek is egyedi névvel lehet hivatkozni. Ezeket PL / SQL adatbázis-objektumokként tárolják. Az alábbiakban bemutatjuk a funkciók néhány jellemzőjét.

  • A függvények önálló blokkok, amelyeket főként számítási célokra használnak.
  • A függvény a RETURN kulcsszóval adja vissza az értéket, és ennek az adattípusát a létrehozáskor határozzák meg.
  • A függvénynek vagy vissza kell adnia egy értéket, vagy fel kell emelnie a kivételt, vagyis a visszatérés kötelező a függvényekben.
  • A DML utasítás nélküli funkció közvetlenül meghívható a SELECT lekérdezésben, míg a DML művelettel rendelkező függvény csak más PL / SQL blokkokból hívható meg.
  • Lehet beágyazott blokkja, vagy definiálható és beágyazható a többi blokkba vagy csomagba.
  • Tartalmaz deklarációs részt (opcionális), végrehajtási részt, kivételkezelő részt (opcionális).
  • Az értékeket átadhatjuk a függvénynek, vagy a paramétereken keresztül beolvashatjuk az eljárásból.
  • Ezeket a paramétereket bele kell foglalni a hívó utasításba.
  • A PLSQL függvény az OUT paramétereken keresztül is visszaadhatja az értéket, nem a RETURN használatával.
  • Mivel mindig visszaadja az értéket, a hívó utasításban mindig hozzárendeli operátorral kíséri a változókat.

Szintaxis

CREATE OR REPLACE FUNCTION
(
)RETURN [ IS | AS ]BEGINEXCEPTIONEND; 
  • A CREATE FUNCTION utasítja a fordítót egy új függvény létrehozására. A „VAGY CSERE” kulcsszó arra utasítja a fordítót, hogy cserélje le a meglévő függvényt (ha van ilyen) az aktuálisra.
  • A Funkció névnek egyedinek kell lennie.
  • A RETURN adattípust meg kell említeni.
  • Az „IS” kulcsszót fogjuk használni, amikor az eljárás be van ágyazva néhány más blokkba. Ha az eljárás önálló, akkor az „AS” lesz használva. Ezen a kódolási szabványon kívül mindkettőnek ugyanaz a jelentése.

1. példa: Funkció létrehozása és hívása Anonymous Block használatával

Ebben a programban egy olyan függvényt fogunk létrehozni, amely a nevet bemenetnek veszi, és az üdvözlő üzenetet kimenetként adja vissza. Névtelen blokkot és kijelölési utasítást fogunk használni a függvény meghívásához.

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;

Kód Magyarázat:

  • 1. kódsor: Az Oracle függvény létrehozása „welcome_msg_func” névvel és egy „IN” típusú „p_name” paraméterrel.
  • 2. kódsor: a visszatérési típus deklarálása VARCHAR2 néven
  • 5. kódsor: A „Welcome” összefűzött érték és a paraméterérték visszaadása.
  • 8. kódsor: Névtelen blokk a fenti függvény meghívásához.
  • 9. kódsor: A változó deklarálása adattípussal megegyezik a függvény visszatérési adattípusával.
  • 11. kódsor: A függvény meghívása és a visszatérési érték feltöltése az „lv_msg” változóra.
  • 12. kódsor: A változó értékének kinyomtatása. A kimenet, amelyet itt kap, a "Welcome Guru99"
  • 14. kódsor: Ugyanazon funkció meghívása a SELECT utasítással. A visszatérési érték közvetlenül a standard kimenetre irányul.

Az eljárás és a funkció közötti hasonlóságok

  • Mindkettő más PL / SQL blokkokból meghívható.
  • Ha az alprogramban felvetett kivételt nem kezeljük az alprogram kivételkezelés szakaszában, akkor az tovább fog terjedni a hívó blokkba.
  • Mindkettőnek annyi paramétere lehet, amennyi szükséges.
  • Mindkettőt adatbázis objektumként kezeljük a PL / SQL-ben.

Eljárás Vs. Funkció: Főbb különbségek

Eljárás Funkció
  • Főleg bizonyos folyamatok végrehajtására használják
  • Főleg valamilyen számítás elvégzésére szolgál
  • A SELECT utasításban nem lehet hívni
  • A DM utasításokat nem tartalmazó függvény meghívható a SELECT utasításban
  • Az OUT paraméterrel adja meg az értéket
  • Használja a RETURN gombot az érték visszaadásához
  • Az érték visszaadása nem kötelező
  • Kötelező visszaadni az értéket
  • A RETURN egyszerűen kilép a vezérlésből az alprogramból.
  • A RETURN kilép a vezérlésből az alprogramból, és visszaadja az értéket is
  • A visszatérési adattípust a létrehozáskor nem adják meg
  • A visszatérési adattípus a létrehozáskor kötelező

Beépített funkciók PL / SQL-ben

A PL / SQL különféle beépített függvényeket tartalmaz a karakterláncokkal és a dátum adattípussal való együttműködéshez. Itt láthatjuk a gyakran használt függvényeket és azok használatát.

Konverziós függvények

Ezeket a beépített funkciókat használják arra, hogy az egyik adattípust átalakítsák egy másik adattípusra.

Funkció neve Használat Példa
TO_CHAR A másik adattípust karaktertípussá alakítja TO_CHAR (123);
TO_DATE (karakterlánc, formátum) A megadott karakterláncot dátumra konvertálja. A karakterláncnak meg kell egyeznie a formátummal. TO_DATE ('2015-JAN-15', 'ÉÉÉÉ-HH-NN'); Kimenet: 2015.01.15
TO_NUMBER (szöveg, formátum) Átalakítja a szöveget a megadott formátum számtípusára. A „9” információ a számjegyek számát jelöli Válassza a TO_NUMBER ('1234', '9999') lehetőséget a kettős közül; Kimenet: 1234 Válassza a TO_NUMBER ('1 234,45', '9 999,99') lehetőséget a kettősből; Kimenet: 1234

Húrfüggvények

Ezeket a függvényeket használják a karakter adattípusán.

Funkció neve Használat Példa
INSTR (szöveg, karakterlánc, kezdet, időtartam) Megadja az adott szöveg helyzetét az adott karakterláncban.
  • szöveg - Fő karakterlánc
  • karakterlánc - keresendő szöveg
  • kezdő - a keresés kezdő pozíciója (opcionális)
  • megfelelés - a keresett karakterlánc előfordulása (opcionális)
Válassza ki az INSTR ('AIRPLANE', 'E', 2,1) lehetőséget a kettős kimenetből : 2 Válassza az INSTR ('AIRPLANE', 'E', 2,2) lehetőséget a kettős kimenet közül: 9 ( E második előfordulása)
SUBSTR (szöveg, kezdet, hossz) Megadja a fő karakterlánc szubstring értékét.
  • szöveg - fő karakterlánc
  • kezdő - kiinduló helyzet
  • hosszúság - hossza felírandó
válassza ki a szubsztrátumot ('repülőgép', 1,7) a kettős kimenetből : aeropla
FELSŐ (szöveg) Visszaadja a megadott szöveg nagybetűjét Válassza ki a felsőt ('guru99') a kettősből; Kimenet : GURU99
LOWER (szöveg) Visszaadja a megadott szöveg kisbetűit Válasszon alacsonyabbat ('repülőgép') kettősből; Kimenet : repülőgép
INITCAP (szöveg) Visszaadja a megadott szöveget a kezdőbetűvel nagybetűvel. Válasszon ('guru99') a kettős kimenetből : Guru99 Válassza ki ('az én történetem' 'a kettős kimenetből : Saját történet
HOSSZ (szöveg) Visszaadja az adott karakterlánc hosszát Válassza a LENGTH ('guru99') lehetőséget a kettős közül; Kimenet : 6
LPAD (szöveg, hossz, pad_kar) Párnázza a karakterláncot a bal oldalon a megadott hosszúságig (teljes karakterlánc) az adott karakterrel Válassza ki az LPAD-t ('guru99', 10, '$') a kettősből; Kimenet : $$$$ guru99
RPAD (szöveg, hossz, pad_kar) Párnázza a karakterláncot a jobb oldalon a megadott hosszúságig (teljes karakterlánc) az adott karakterrel Válassza ki az RPAD ('guru99', 10, '-') kettős kimenetből : guru99 ----
LTRIM (szöveg) Levágja a szövegből a vezető szóközt Válassza ki az LTRIM ('Guru99') lehetőséget a kettős közül; Kimenet : Guru99
RTRIM (szöveg) Levágja a szöveg mögötti fehér helyet Válassza ki az RTRIM ('Guru99') lehetőséget a kettős közül; Kimenet ; Guru99

Dátum függvények

Ezek olyan funkciók, amelyeket a dátumokkal való manipulációra használnak.

Funkció neve Használat Példa
ADD_MONTHS (dátum, hónapok száma) Hozzáadja az adott hónapokat a dátumhoz ADD_MONTH ('2015-01-01', 5.); Kimenet : 2015.01.05
SYSDATE Visszaadja a kiszolgáló aktuális dátumát és idejét Válassza a SYSDATE lehetőséget a kettősből; Kimenet : 2015.10.4. 14:11:43
TRUNC A dátumváltozó kerekítése a lehetséges alacsonyabb értékre válassza a sysdate, a TRUNC (sysdate) lehetőséget a kettősből; Kimenet : 2015.10.04 14:12:39 PM 2015.04.4
KEREK A dátumot a legközelebbi határig kerekíti, akár magasabbra, akár alacsonyabbra Válassza ki a sysdate, ROUND (sysdate) lehetőséget a kettős kimenetről : 2015.10.04. 14:14:34.
MONTHS_BETWEEN Visszaadja a két dátum közötti hónapok számát Válassza a MONTHS_BETWEEN (sysdate + 60, sysdate) lehetőséget a kettős kimenetből : 2

Összegzés

Ebben a fejezetben a következőket tanultuk.

  • Hogyan hozzuk létre az Eljárást és annak különböző hívási módjait
  • Hogyan hozzuk létre a Funkciót és annak különböző hívási módjait
  • Az eljárás és a funkció közötti hasonlóságok és különbségek
  • Paraméterek és RETURN közös terminológiák a PL / SQL alprogramokban
  • Gyakori beépített funkciók az Oracle PL / SQL-ben