PL/SQL blokk: Szerkezet, szintaxis és névtelen példa
⚡ Okos összefoglaló
A PL/SQL blokk az az alapvető egység, amely a PL/SQL és SQL utasításokat csoportosítja, így azok együtt, és nem soronként hajtódnak végre. Minden blokknak van egy deklarációs, végrehajtási és kivételkezelési része, és a blokkok vagy névtelenek, vagy névvel ellátottak.
Mi az a PL/SQL blokk?
A PL/SQL-ben a kód nem egysoros formátumban fut; mindig a group hajtja végre.ping a kódot egyetlen elembe, egy blokkba bontjuk. Ebben az oktatóanyagban ezekről a blokkokról fogsz tanulni.
A blokkok PL/SQL és SQL utasításokat is tartalmaznak. Mindezek az utasítások egy egészként futnak, nem pedig egyszerre egy utasításonként.
Blokkstruktúra
A PL/SQL blokkok előre definiált struktúrával rendelkeznek, amelyben a kód csoportosítva van. Az alábbiakban a PL/SQL blokk különböző részei láthatók:
- Nyilatkozat szakasz
- Végrehajtási rész
- Kivétel-kezelés rész
Az alábbi kép a különböző PL/SQL blokkszakaszokat és azok sorrendjét szemlélteti.
Nyilatkozat szakasz
Ez egy PL/SQL blokk első szakasza, és opcionális. Ebben a szakaszban deklarálhatók a blokkban szükséges változók, kurzorok, kivételek, alprogramok, pragma utasítások és gyűjtemények. A rész néhány további jellemzője:
- Ez a szakasz opcionális, és kihagyható, ha nincs szükség deklarációkra.
- Ennek kell lennie a PL/SQL blokk első szakaszának, ha van ilyen.
- A 'DECLARE' kulcsszóval kezdődik triggerek és névtelen blokkok esetén. Más alprogramok esetében ez a kulcsszó nincs jelen; ehelyett az alprogram neve utáni rész jelöli a deklarációs szakaszt.
- Mindig a végrehajtási szakasznak kell követnie.
Végrehajtási szakasz
A végrehajtási rész a fő és kötelező rész, amely ténylegesen végrehajtja a benne írt kódot. Mivel PL / SQL végrehajtható utasításokat vár, ez a blokk nem lehet üres, és legalább egy érvényes végrehajtható sort kell tartalmaznia. A rész néhány további jellemzője:
- PL/SQL kódot és SQL kódot is tartalmazhat.
- Egy vagy több blokkot tartalmazhat beágyazott blokkként.
- A 'BEGIN' kulcsszóval kezdődik.
- Ezt vagy az 'END' karakternek, vagy a kivételkezelési szakasznak kell követnie, ha van ilyen.
Kivétel-kezelési részleg
A kivételek elkerülhetetlen hibák, amelyek futásidőben fordulnak elő, és amelyek kezelése Oracle egy kivételkezelési részt biztosít blokkokban. Ez a szakasz PL/SQL utasításokat is tartalmazhat, és opcionális.
- Ez az a szakasz, ahol a végrehajtási blokkban keletkezett kivételt kezeljük.
- Ez a PL/SQL blokk utolsó része.
- Az ebből a szakaszból származó vezérlés soha nem térhet vissza a végrehajtási blokkhoz.
- A „KIVÉTEL” kulcsszóval kezdődik.
- Mindig az „END” kulcsszónak kell követnie.
Az 'END' kulcsszó a PL/SQL blokk végét jelöli.
PL/SQL blokk szintaxis
Az alábbiakban a PL/SQL blokkstruktúra szintaxisa látható.
DECLARE --optional <declarations> BEGIN --mandatory <executable statements. At least one executable statement is mandatory> EXCEPTION --optional <exception handles> END; --mandatory /
Jegyzet: Egy blokkot mindig '/' jelnek kell követnie, amely információt küld a fordítónak a blokk végéről.
A PL/SQL blokkok típusai
A PL/SQL blokkok főként kétféle típusúak:
- Névtelen blokkok
- Elnevezett blokkok
A kettőt az alábbiakban röviden összehasonlítjuk, mielőtt ismertetnénk őket.
| Aspect | Névtelen blokk | Elnevezett blokk |
|---|---|---|
| Van neve | Nem | Igen |
| Adatbázisban tárolva | Nem | Igen, tárgyként |
| Azzal kezdődik | KIJELENTÉS vagy KEZDÉS | TEREMT |
| Többször | Csak ugyanaz a munkamenet | Bármikor hívható |
Névtelen blokkok
Az anonim blokkok olyan PL/SQL blokkok, amelyekhez nincs név rendelve. Létre kell hozni és használni őket ugyanabban a munkamenetben, mivel nem adatbázis-objektumként tárolódnak a szerveren.
Mivel nem tárolódnak az adatbázisban, nincs szükségük külön fordítási lépésre. Közvetlenül íródnak és futnak, a fordítás és a végrehajtás egyetlen folyamatban történik. Néhány további jellemző:
- Ezeknek a blokkoknak nincs referencianevük.
- A „DECLARE” vagy a „BEGIN” kulcsszóval kezdődnek.
- Mivel nincs hivatkozási nevük, nem tárolhatók későbbi felhasználásra, és ugyanabban a munkamenetben kell létrehozni és végrehajtani őket.
- Meghívhatnak más elnevezett blokkokat, de egy anonim blokk hívása nem lehetséges, mivel annak nincs referenciája.
- Tartalmazhatnak elnevezett vagy névtelen beágyazott blokkot, illetve bármilyen blokkon belül is beágyazhatók.
- Mindhárom résszel rendelkezhetnek, amelyek közül a végrehajtási rész kötelező, a másik kettő pedig opcionális.
Blocks néven
A névvel ellátott blokkoknak egyedi és meghatározott nevük van. Adatbázis-objektumként tárolódnak a szerveren, így hivatkozni lehet rájuk, illetve használni őket, amíg jelen vannak. A névvel ellátott blokkok fordítási folyamata külön történik, amikor adatbázis-objektumként jönnek létre. Néhány további jellemző:
- Ezek a blokkok más blokkokból is hívhatók.
- A blokk felépítése megegyezik egy anonim blokkéval, azzal a különbséggel, hogy soha nem 'DECLARE'-rel kezdődik. Ehelyett 'CREATE'-tel kezdődik, amely utasítja a fordítót, hogy adatbázis-objektumként hozza létre.
- Ezek a blokkok beágyazhatók más blokkokba, és tartalmazhatnak egymásba ágyazott blokkokat is.
- Az elnevezett blokkok alapvetően két típusból állnak:
- Eljárás
- Funkció
Többet is megtudhatsz ezekről az elnevezett blokkokról az útmutatóban. eljárások és funkciók.



