PL/SQL-blok: Struktur, syntaks og anonymt eksempel
โก Smart opsummering
PL/SQL-blokken er den grundlรฆggende enhed, der grupperer PL/SQL- og SQL-instruktioner, sรฅ de udfรธres sammen i stedet for linje for linje. Hver blok har en deklarations-, udfรธrelses- og undtagelseshรฅndteringssektion, og blokkene er enten anonyme eller navngivne.

Hvad er en PL/SQL-blok?
I PL/SQL udfรธres kode ikke i et enkeltlinjeformat; den udfรธres altid af grouping koden til et enkelt element kaldet en blok. I denne vejledning lรฆrer du om disse blokke.
Blokke indeholder bรฅde PL/SQL- og SQL-instruktioner. Alle disse instruktioner udfรธres som en helhed i stedet for รฉn instruktion ad gangen.
Blokstruktur
PL/SQL-blokke har en foruddefineret struktur, hvor koden er grupperet. Nedenfor er de forskellige sektioner af en PL/SQL-blok:
- Erklรฆringsafsnit
- Udfรธrelsessektion
- Undtagelses-Hรฅndtering sektion
Billedet nedenfor illustrerer de forskellige PL/SQL-bloksektioner og deres rรฆkkefรธlge.
Erklรฆring sektion
Dette er den fรธrste sektion af en PL/SQL-blok, og den er valgfri. Det er den sektion, hvor variabler, cursorer, undtagelser, underprogrammer, pragma-instruktioner og samlinger, der er nรธdvendige i blokken, deklareres. Et par flere karakteristika for denne del:
- Dette afsnit er valgfrit og kan springes over, hvis der ikke er behov for erklรฆringer.
- Det bรธr vรฆre den fรธrste sektion i en PL/SQL-blok, hvis en sรฅdan findes.
- Det starter med nรธgleordet 'DECLARE' for triggere og anonyme blokke. For andre underprogrammer er dette nรธgleord ikke til stede; i stedet markerer delen efter underprogramnavnet deklarationsafsnittet.
- Det bรธr altid efterfรธlges af udfรธrelsesafsnittet.
Udfรธrelsesafdeling
Udfรธrelsesdelen er den primรฆre og obligatoriske del, der rent faktisk udfรธrer den kode, der er skrevet i den. Da PL / SQL forventer eksekverbare sรฆtninger, denne blok mรฅ ikke vรฆre tom og skal have mindst รฉn gyldig eksekverbar linje. Et par flere karakteristika for denne del:
- Den kan indeholde bรฅde PL/SQL-kode og SQL-kode.
- Den kan indeholde en eller mange blokke som indbyggede blokke.
- Det starter med nรธgleordet 'BEGIN'.
- Den skal efterfรธlges enten af โโ'END' eller af undtagelseshรฅndteringssektionen, hvis den findes.
Undtagelseshรฅndteringssektion
Undtagelser er uundgรฅelige fejl, der opstรฅr under kรธrsel, og hรฅndteringen af โโdem Oracle indeholder en sektion til hรฅndtering af undtagelser i blokke. Denne sektion kan ogsรฅ indeholde PL/SQL-sรฆtninger, og den er valgfri.
- Dette er det afsnit, hvor en undtagelse, der er opstรฅet i udfรธrelsesblokken, hรฅndteres.
- Det er den sidste del af PL/SQL-blokken.
- Kontrol fra denne sektion kan aldrig vende tilbage til udfรธrelsesblokken.
- Det starter med nรธgleordet 'UNDTAGELSE'.
- Det skal altid efterfรธlges af nรธgleordet 'END'.
Nรธgleordet 'END' markerer slutningen af โโPL/SQL-blokken.
PL/SQL-bloksyntaks
Nedenfor er syntaksen for PL/SQL-blokstrukturen.
DECLARE --optional <declarations> BEGIN --mandatory <executable statements. At least one executable statement is mandatory> EXCEPTION --optional <exception handles> END; --mandatory /
Bemรฆrk: En blok skal altid efterfรธlges af '/', som sender information til compileren om blokkens afslutning.
Typer af PL/SQL-blokke
PL/SQL-blokke findes primรฆrt i to typer:
- Anonyme blokke
- Navngivne blokke
De to sammenlignes kort nedenfor, fรธr hver enkelt beskrives.
| Aspect | Anonym blok | Navngivet blok |
|---|---|---|
| Har et navn | Ingen | Ja |
| Gemt i databasen | Ingen | Ja, som et objekt |
| Starter med | ERKLรR eller BEGYND | SKAB |
| Genanvendelig | Kun samme session | Kan kaldes nรฅr som helst |
Anonyme blokke
Anonyme blokke er PL/SQL-blokke, der ikke har fรฅet tildelt noget navn. De skal oprettes og bruges i samme session, fordi de ikke gemmes pรฅ serveren som databaseobjekter.
Da de ikke er gemt i databasen, behรธver de ikke et separat kompileringstrin. De skrives og udfรธres direkte, og kompilering og udfรธrelse sker i en enkelt proces. Et par flere karakteristika:
- Disse blokke har intet referencenavn.
- De starter med nรธgleordet 'DECLARE' eller 'BEGIN'.
- Da de ikke har noget referencenavn, kan de ikke gemmes til senere brug og skal oprettes og udfรธres i samme session.
- De kan kalde andre navngivne blokke, men et kald til en anonym blok er ikke muligt, da den ikke har nogen reference.
- De kan indeholde en indlejret blok, der er navngivet eller anonym, og de kan ogsรฅ vรฆre indlejret i en hvilken som helst blok.
- De kan have alle tre sektioner, hvoraf udfรธrelsessektionen er obligatorisk, og de to andre er valgfrie.
Navngivne blokke
Navngivne blokke har et specifikt og unikt navn. De gemmes som databaseobjekter pรฅ serveren, sรฅ de kan henvises til eller bruges, sรฅ lรฆnge de er til stede. Kompileringsprocessen for navngivne blokke sker separat, nรฅr de oprettes som databaseobjekter. Et par flere karakteristika:
- Disse blokke kan kaldes fra andre blokke.
- Blokstrukturen er den samme som en anonym blok, bortset fra at den aldrig starter med 'DECLARE'. I stedet starter den med 'CREATE', som instruerer compileren til at oprette den som et databaseobjekt.
- Disse blokke kan indlejres i andre blokke og kan ogsรฅ indeholde indlejrede blokke.
- Navngivne blokke er grundlรฆggende af to typer:
- Procedure
- Funktion
Du kan lรฆse mere om disse navngivne blokke i guiden til procedurer og funktioner.


