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.

  • 🧱 Alapötlet: Code egy blokkba van csoportosítva, amely egy egységként fut, ötvözve az eljárási logikát az SQL-lel.
  • 📝 Nyilatkozati szakasz: Opcionális; deklarálja a blokkban használt változókat, kurzorokat, kivételeket és alprogramokat.
  • ▶ ️ Végrehajtási szakasz: Kötelező; BEGIN karakterrel kezdődik és legalább egy végrehajtható utasítást tartalmaz.
  • 🛡️ Kivételes szakasz: Opcionális; EXCEPTION karakterlánccal kezdődik, és futásidejű hibákat kezel.
  • 🏷️ Két típus: A névtelen blokkok névtelenek és egyszer futnak; a névvel ellátott blokkok adatbázis-objektumokként tárolódnak.
  • 🔁 Elnevezett blokkok: Az eljárások és függvények elnevezett blokkok, amelyek ismételten meghívhatók.
  • Végrehajtó: Az END lezárja a blokkot, és egy perjel küldi el a fordítónak.

PL/SQL blokkszerkezet és szintaxis

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:

  1. Nyilatkozat szakasz
  2. Végrehajtási rész
  3. 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.

PL/SQL blokk szakaszok és sorrend

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ó.

PL/SQL blokk szintaxis

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:

  1. Névtelen blokkok
  2. 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:
  1. Eljárás
  2. Funkció

Többet is megtudhatsz ezekről az elnevezett blokkokról az útmutatóban. eljárások és funkciók.

GYIK

Csak a végrehajtási szakasz, amely BEGIN-nel kezdődik és END-del végződik. A deklarációs és a kivételkezelési szakaszok opcionálisak, és elhagyhatók, ha nincs rájuk szükség.

Egy névtelen blokknak nincs neve, nincs tárolva, és ugyanabban a munkamenetben fut. Egy elnevezett blokk, például egy eljárás vagy függvény, adatbázis-objektumként tárolódik, és ismételten meghívható.

Az olyan eszközökben, mint az SQL*Plus, a saját sorban szereplő perjel jelzi a fordítónak, hogy a blokk befejeződött és futtatni kell. Enélkül az eszköz további bemenetre vár.

Igen. A mesterséges intelligencia becsomagolhatja a logikát egy CREATE PROCEDURE fejlécbe, paramétereket adhat hozzá, és a deklarációkat a helyükre helyezheti. Teszteld az eredményt, mivel egy tárolt verzióhoz explicit paramétermódokra és hibakezelésre lehet szükség.

Igen. A deklarációs és kivétel szakaszok független opciók. Egy blokk kezdődhet BEGIN-nel, kihagyhatja a deklarációkat, és mégis tartalmazhat egy EXCEPTION szakaszt az END előtt a futásidejű hibák kiszűrésére.

Foglald össze ezt a bejegyzést a következőképpen: