PL/SQL blok: struktura, sintaksa i anonimni primjer

โšก Pametni saลพetak

PL/SQL blok je osnovna jedinica koja grupira PL/SQL i SQL instrukcije tako da se izvrลกavaju zajedno, a ne redak po redak. Svaki blok ima odjeljak za deklaraciju, izvrลกavanje i rukovanje iznimkama, a blokovi su ili anonimni ili imenovani.

  • ๐Ÿงฑ Osnovna ideja: Code grupiran je u blok koji se izvrลกava kao cjelina, mijeลกajuฤ‡i proceduralnu logiku sa SQL-om.
  • ๐Ÿ“ Odjeljak deklaracije: Neobavezno; deklarira varijable, kursore, iznimke i potprograme koriลกtene u bloku.
  • โ–ถ ๏ธ Izvrลกni odjeljak: Obavezno; poฤinje s BEGIN i sadrลพi barem jednu izvrลกnu naredbu.
  • ๐Ÿ›ก๏ธ Odjeljak iznimki: Neobavezno; poฤinje s IZNIMKOM i obraฤ‘uje pogreลกke tijekom izvoฤ‘enja.
  • ๐Ÿท๏ธ Dvije vrste: Anonimni blokovi su neimenovani i izvrลกavaju se jednom; imenovani blokovi se pohranjuju kao objekti baze podataka.
  • ๐Ÿ” Imenovani blokovi: Procedure i funkcije su imenovani blokovi koji se mogu viลกe puta pozivati.
  • โ›” terminator: END zatvara blok, a kosa crta naprijed ga ลกalje kompajleru.

Struktura i sintaksa PL/SQL blokova

ล to je PL/SQL blok?

U PL/SQL-u, kod se ne izvrลกava u jednolinijskom formatu; uvijek se izvrลกava grou.ping kod u jedan element koji se naziva blok. U ovom vodiฤu nauฤit ฤ‡ete o tim blokovima.

Blokovi sadrลพe i PL/SQL i SQL instrukcije. Sve ove instrukcije se izvrลกavaju kao cjelina, a ne jedna po jedna.

Blok struktura

PL/SQL blokovi imaju unaprijed definiranu strukturu u kojoj je grupiran kod. U nastavku su navedeni razliฤiti dijelovi PL/SQL bloka:

  1. Odjeljak deklaracije
  2. Izvrลกni dio
  3. Odjeljak za rukovanje iznimkama

Donja slika ilustrira razliฤite dijelove PL/SQL blokova i njihov redoslijed.

PL/SQL blok sekcije i redoslijed

Odjeljak deklaracije

Ovo je prvi dio PL/SQL bloka i nije obavezan. To je dio u kojem se deklariraju varijable, kursori, iznimke, potprogrami, pragma instrukcije i kolekcije potrebne u bloku. Joลก nekoliko karakteristika ovog dijela:

  • Ovaj odjeljak je opcionalan i moลพe se preskoฤiti ako nisu potrebne deklaracije.
  • Trebao bi biti prvi dio u PL/SQL bloku, ako postoji.
  • Poฤinje kljuฤnom rijeฤi 'DECLARE' za okidaฤe i anonimne blokove. Za ostale potprograme ova kljuฤna rijeฤ nije prisutna; umjesto toga, dio nakon imena potprograma oznaฤava odjeljak deklaracije.
  • Uvijek bi trebao slijediti dio za izvrลกenje.

Odjel za izvrลกenje

Izvrลกni dio je glavni i obvezni dio koji zapravo izvrลกava kod napisan u njemu. Buduฤ‡i da PL / SQL oฤekuje izvrลกne naredbe, ovaj blok ne moลพe biti prazan i mora imati barem jednu valjanu izvrลกnu liniju. Joลก nekoliko karakteristika ovog dijela:

  • Moลพe sadrลพavati i PL/SQL kod i SQL kod.
  • Moลพe sadrลพavati jedan ili viลกe blokova unutar sebe kao ugnijeลพฤ‘ene blokove.
  • Poฤinje kljuฤnom rijeฤi 'BEGIN'.
  • Nakon toga treba slijediti ili 'END' ili odjeljak za rukovanje iznimkama, ako postoji.

Odjeljak za rukovanje iznimkama

Iznimke su neizbjeลพne greลกke koje se javljaju tijekom izvoฤ‘enja, a za njihovo rjeลกavanje Oracle pruลพa odjeljak za obradu iznimki u blokovima. Ovaj odjeljak takoฤ‘er moลพe sadrลพavati PL/SQL naredbe i nije obavezan.

  • Ovo je dio gdje se obraฤ‘uje iznimka nastala u bloku izvrลกenja.
  • To je posljednji dio PL/SQL bloka.
  • Kontrola iz ove sekcije nikada se ne moลพe vratiti u izvrลกni blok.
  • Poฤinje kljuฤnom rijeฤi 'IZNIMKA'.
  • Uvijek treba slijediti kljuฤna rijeฤ 'END'.

Kljuฤna rijeฤ 'END' oznaฤava kraj PL/SQL bloka.

Sintaksa PL/SQL bloka

Ispod je sintaksa PL/SQL blok strukture.

Sintaksa PL/SQL blokova

DECLARE --optional
<declarations>

BEGIN --mandatory
<executable statements. At least one executable statement is mandatory>

EXCEPTION --optional
<exception handles>

END; --mandatory
/

Biljeลกka: Iza bloka uvijek treba stajati znak '/', koji ลกalje informaciju kompajleru o kraju bloka.

Vrste PL/SQL blokova

PL/SQL blokovi su uglavnom dvije vrste:

  1. Anonimni blokovi
  2. Imenovani blokovi

Dva su usporeฤ‘ena u nastavku prije nego ลกto je svaki opisan.

Aspekt Anonimni blok Imenovani blok
Ima ime Ne Da
Pohranjeno u bazi podataka Ne Da, kao objekt
Poฤinje sa IZJAVITE ili POฤŒNITE STVORITI
Za viลกekratnu upotrebu Samo ista sesija Poziv je moguฤ‡ u bilo koje vrijeme

Anonimni blokovi

Anonimni blokovi su PL/SQL blokovi koji nemaju dodijeljeno ime. Potrebno ih je kreirati i koristiti u istoj sesiji jer nisu pohranjeni na posluลพitelju kao objekti baze podataka.

Buduฤ‡i da nisu pohranjeni u bazi podataka, ne zahtijevaju zaseban korak kompilacije. Piลกu se i izvrลกavaju izravno, a kompilacija i izvrลกavanje odvijaju se u jednom procesu. Joลก nekoliko karakteristika:

  • Ovi blokovi nemaju referentni naziv.
  • Poฤinju kljuฤnom rijeฤi 'DECLARE' ili 'BEGIN'.
  • Buduฤ‡i da nemaju referentno ime, ne mogu se pohraniti za kasniju upotrebu i moraju se kreirati i izvrลกiti u istoj sesiji.
  • Mogu pozivati โ€‹โ€‹druge imenovane blokove, ali poziv anonimnog bloka nije moguฤ‡ jer nema referencu.
  • Mogu sadrลพavati ugnijeลพฤ‘eni blok koji je imenovan ili anoniman, a mogu se ugnijeลพditi i unutar bilo kojeg bloka.
  • Mogu imati sva tri dijela, od kojih je dio za izvrลกenje obavezan, a druga dva su opcionalna.

Imenovani blokovi

Imenovani blokovi imaju specifiฤno i jedinstveno ime. Pohranjeni su kao objekti baze podataka na posluลพitelju, tako da se na njih moลพe pozivati โ€‹โ€‹ili ih se moลพe koristiti sve dok su prisutni. Proces kompajliranja za imenovane blokove odvija se odvojeno kada se kreiraju kao objekti baze podataka. Joลก nekoliko karakteristika:

  • Ovi blokovi se mogu pozvati iz drugih blokova.
  • Struktura bloka je ista kao i anonimni blok, osim ลกto nikada ne poฤinje s 'DECLARE'. Umjesto toga, poฤinje s 'CREATE', ลกto upuฤ‡uje kompajler da ga stvori kao objekt baze podataka.
  • Ovi blokovi mogu biti ugnijeลพฤ‘eni unutar drugih blokova i mogu sadrลพavati ugnijeลพฤ‘ene blokove.
  • Imenovani blokovi su u osnovi dvije vrste:
  1. Postupak
  2. funkcija

Viลกe o ovim imenovanim blokovima moลพete saznati u vodiฤu za postupci i funkcije.

Pitanja i odgovori

Samo dio za izvrลกenje, koji poฤinje s BEGIN i zavrลกava s END. Dijelovi za deklaraciju i rukovanje iznimkama su opcionalni i mogu se izostaviti ako nisu potrebni.

Anonimni blok nema ime, nije pohranjen i izvrลกava se u istoj sesiji. Imenovani blok, kao ลกto je procedura ili funkcija, pohranjen je kao objekt baze podataka i moลพe se viลกe puta pozivati.

U alatima poput SQL*Plusa, kosa crta u vlastitom retku govori kompajleru da je blok dovrลกen i da ga treba pokrenuti. Bez nje, alat stalno ฤeka na daljnji unos.

Da. AI moลพe logiku omotati u zaglavlje CREATE PROCEDURE, dodati parametre i premjestiti deklaracije na mjesto. Testirajte rezultat, buduฤ‡i da pohranjena verzija moลพe zahtijevati eksplicitne naฤine rada parametara i rukovanje pogreลกkama.

Da. Deklaracijski i iznimniฤki odjeljci su neovisne opcije. Blok moลพe zapoฤeti na BEGIN, preskoฤiti deklaracije i i dalje ukljuฤivati โ€‹โ€‹odjeljak EXCEPTION prije END-a za hvatanje pogreลกaka tijekom izvoฤ‘enja.

Saลพmite ovu objavu uz: