A tárolt eljárások segítenek az adatbázis-optimalizálásban és az újrafelhasználhatóság javításában. Ahelyett, hogy ugyanazt a lekérdezést kellene végrehajtania, létrehozhatja a feladatot tárolt eljárásként, amelyet szükség esetén bármikor meghívhat. A bejegyzés végére mindent megtudhat a tárolt eljárásokról.
Tárolt eljárások használata PostgreSQL-ben
PostgreSQL-felhasználóként észrevehette, hogy a PostgreSQL-függvények nem hajtanak végre tranzakciókat. Bár lehetséges tranzakciót létrehozni, a véglegesítés vagy az előző állapotba való visszaállítás nem lehetséges. Ezeket a korlátozásokat azonban a tárolt eljárások segítségével megkerülhetjük.
Íme az alapvető szintaxis a PostgreSQL-ben tárolt eljárás létrehozásához:
ELJÁRÁS LÉTREHOZÁSA VAGY CSERÉJE procedúra_neve(
paraméter(ek) adattípus
)
NYELV plpsql;
AS $$
KIJELENT
változók_ha_bármilyen adattípus
KEZDŐDIK
logika
VÉGE;
$$
A legfontosabb dolog, amit meg kell jegyezni az adott szintaxisból, a „procedure_name” név, amelyet a tárolt eljáráshoz fog használni, a belefoglalni kívánt paraméterek és azok adattípusai, valamint a logika, amelyek főként SQL utasítások.
Nézzünk három példát, amelyek segítenek megérteni, hogyan hozhatók létre a tárolt eljárások PostgreSQL-ben.
1. példa: Tárolt eljárás egy szám négyzetének kiszámítására
Első példánkban létrehozunk egy tárolt eljárást, amely a „RAISE NOTICE” utasítást használja a kimenet terminálra történő kinyomtatására. A tárolt eljárás felveszi a hívásakor megadott egész értéket, és kiszámítja a négyzetét.
Így hozzuk létre a tárolt eljárást:
Paraméterünket „szám1”-nek nevezzük, és ez egy egész szám. A logikai résznél meghatározzuk, hogyan kapja meg a „szám1” négyzetét, és tárolja azt négyzetváltozóként. Amikor végrehajtjuk a parancsot, a „CREATE PROCEDURE” kimenetet kapjuk, amely megerősíti, hogy sikerült a tárolt eljárást létrehozni.
A következő feladat az eljárás meghívása és a várt argumentum megadása.
CALL eljárás_neve(argumentumok);Megkapja a CALL kimenetet, amely azt mutatja, hogy a tárolt eljárás végrehajtásra került, és megkapjuk a várt kimenetet, amely ebben az esetben az általunk hozzáadott argumentum négyzete.
2. példa: Tárolt eljárás az értékek beszúrására egy táblázatbejegyzésbe
A következő két példa bemutatja, hogyan hozható létre egy adatbázistáblával működő tárolt eljárás. Gyorsan készítsük el a „tanulók” táblázatot, amellyel dolgozni fogunk.
Ebben a példában létrehozunk egy tárolt eljárást, amely lehetővé teszi a felhasználó számára, hogy beillessze az értékeket az újonnan létrehozott táblába. Figyeljük meg, hogyan adjuk meg azokat a paramétereket, amelyeket elvárunk argumentumként hozzáadni a tárolt eljárás meghívásakor. Ezenkívül meghatározzuk azt a logikát, amely átveszi a hozzáadott argumentumokat, és végrehajt egy INSERT SQL utasítást a „diákok” táblába.
Az elérhető tárolt eljárásokat a következő parancs futtatásával ellenőrizhetjük:
\dfAz első tárolt eljárás, amelyet a következő kimenetből láthatunk, a korábban létrehozott „add_student”.
Most hívjuk meg a tárolt eljárást a végrehajtásához. A következő képen látható, hogy van egy üres táblázatunk, de meghívtuk a tárolt eljárást az első tanuló hozzáadásához:
Ha felsoroljuk az értékeket a táblázatunkban, akkor figyeljük meg, hogy a call procedúra paranccsal hozzáadott argumentumok mennyire a táblázatunk első tanulójának értékei. Így hoz létre egy tárolt eljárást az értékek táblázatba történő beszúrásához.
Vegye figyelembe, hogy a tárolt eljárás létrehozásakor a megadott paramétereknek meg kell egyeznie a táblában elvártakkal a hibák elkerülése érdekében. Ezenkívül az adattípusnak meg kell egyeznie.
3. példa: Tárolt eljárás egy táblázatbejegyzés frissítéséhez
Továbblépve hozzunk létre egy másik tárolt eljárást, amely frissíti a táblabejegyzést. Ha gyorsan szeretné frissíteni a táblázatunkban szereplő értékeket, létrehozhat egy tárolt frissítési eljárást az alábbiak szerint:
Adja meg, hogy melyik oszlopot szeretné frissíteni a WHERE kulcsszóval, és az új értéket a SET kulcsszóval. Ezután hozzá kell adnia a COMMIT kulcsszót a változtatások megőrzéséhez.
Hívjuk meg a frissített tárolt eljárást, és adjuk hozzá a várt argumentumokat: „student_id” és az új kurzus.
Ha felsoroljuk a bejegyzéseket a táblázatunkban, akkor ellenőrizhetjük, hogy megvan-e az általunk megcélzott hallgató frissített kurzusa. Így működik a tárolt frissítési eljárás.
Következtetés
A PostgreSQL-ben bármilyen tárolt eljárást létrehozhat. Csak a követendő szintaxist kell megértenie, majd meg kell határoznia a tárolt eljárás logikáját. Innentől hívja meg a tárolt eljárást, és ellenőrizze, hogy a várt módon futott-e le. Ez a bejegyzés ismerteti a PostgreSQL-ben tárolt eljárásokat, és példákat mutat be azok létrehozására.