PL/SQL-blokk: Struktur, syntaks og anonymt eksempel
โก Smart oppsummering
PL/SQL-blokken er den grunnleggende enheten som grupperer PL/SQL- og SQL-instruksjoner slik at de kjรธres sammen i stedet for linje for linje. Hver blokk har en deklarasjons-, utfรธrelses- og unntakshรฅndteringsdel, og blokkene er enten anonyme eller navngitte.

Hva er en PL/SQL-blokk?
I PL/SQL kjรธres ikke kode i enlinjeformat; den kjรธres alltid av grouping koden til et enkelt element kalt en blokk. I denne veiledningen lรฆrer du om disse blokkene.
Blokker inneholder bรฅde PL/SQL- og SQL-instruksjoner. Alle disse instruksjonene utfรธres som en helhet i stedet for รฉn instruksjon om gangen.
Blokkstruktur
PL/SQL-blokker har en forhรฅndsdefinert struktur der koden er gruppert. Nedenfor er de ulike delene av en PL/SQL-blokk:
- Erklรฆringsdelen
- Utfรธrelsesseksjonen
- Unntak-Hรฅndtering seksjon
Bildet nedenfor illustrerer de forskjellige PL/SQL-blokkdelene og rekkefรธlgen deres.
Erklรฆringsseksjonen
Dette er den fรธrste delen av en PL/SQL-blokk, og den er valgfri. Det er delen der variabler, markรธrer, unntak, underprogrammer, pragma-instruksjoner og samlinger som trengs i blokken deklareres. Noen flere egenskaper ved denne delen:
- Denne delen er valgfri og kan hoppes over hvis det ikke er behov for noen deklarasjoner.
- Det bรธr vรฆre den fรธrste delen i en PL/SQL-blokk, hvis den finnes.
- Det starter med nรธkkelordet ยซDECLAREยป for triggere og anonyme blokker. For andre underprogrammer finnes ikke dette nรธkkelordet; i stedet markerer delen etter underprogramnavnet deklarasjonsdelen.
- Den bรธr alltid etterfรธlges av utfรธrelsesdelen.
Utfรธrelsesseksjonen
Utfรธrelsesdelen er den viktigste og obligatoriske delen som faktisk utfรธrer koden som er skrevet inni den. Siden PL / SQL forventer kjรธrbare setninger, denne blokken kan ikke vรฆre tom og mรฅ ha minst รฉn gyldig kjรธrbar linje. Noen flere egenskaper ved denne delen:
- Den kan inneholde bรฅde PL/SQL-kode og SQL-kode.
- Den kan inneholde รฉn eller mange blokker inni seg som nestede blokker.
- Det starter med nรธkkelordet ยซBEGINยป.
- Den bรธr etterfรธlges av enten 'END' eller av unntakshรฅndteringsdelen, hvis den finnes.
Seksjon for unntakshรฅndtering
Unntak er uunngรฅelige feil som oppstรฅr under kjรธretid, og for รฅ hรฅndtere dem Oracle inneholder en seksjon for hรฅndtering av unntak i blokker. Denne seksjonen kan ogsรฅ inneholde PL/SQL-setninger, og den er valgfri.
- Dette er delen der et unntak som oppstรฅr i utfรธrelsesblokken hรฅndteres.
- Det er den siste delen av PL/SQL-blokken.
- Kontroll fra denne delen kan aldri gรฅ tilbake til utfรธrelsesblokken.
- Det starter med nรธkkelordet ยซUNNTAKยป.
- Det skal alltid etterfรธlges av nรธkkelordet ยซENDยป.
Nรธkkelordet 'END' markerer slutten pรฅ PL/SQL-blokken.
PL/SQL blokksyntaks
Nedenfor er syntaksen til PL/SQL-blokkstrukturen.
DECLARE --optional <declarations> BEGIN --mandatory <executable statements. At least one executable statement is mandatory> EXCEPTION --optional <exception handles> END; --mandatory /
OBS: En blokk skal alltid etterfรธlges av '/', som sender informasjon til kompilatoren om slutten av blokken.
Typer av PL/SQL-blokker
PL/SQL-blokker er hovedsakelig av to typer:
- Anonyme blokker
- Navngitte blokker
De to sammenlignes raskt nedenfor fรธr hver av dem beskrives.
| Aspekt | Anonym blokk | Navngitt blokk |
|---|---|---|
| Har et navn | Nei | Ja |
| Lagret i databasen | Nei | Ja, som et objekt |
| Begynner med | ERKLรR eller BEGYNN | SKAPE |
| Gjenbruk | Kun samme รธkt | Kan ringes inn nรฅr som helst |
Anonyme blokker
Anonyme blokker er PL/SQL-blokker som ikke har noe tildelt navn. De mรฅ opprettes og brukes i samme รธkt fordi de ikke lagres pรฅ serveren som databaseobjekter.
Siden de ikke lagres i databasen, trenger de ikke noe separat kompileringstrinn. De skrives og utfรธres direkte, og kompilering og utfรธrelse skjer i รฉn prosess. Noen flere kjennetegn:
- Disse blokkene har ikke noe referansenavn.
- De starter med nรธkkelordet ยซDECLAREยป eller ยซBEGINยป.
- Fordi de ikke har noe referansenavn, kan de ikke lagres for senere bruk og mรฅ opprettes og kjรธres i samme รธkt.
- De kan kalle andre navngitte blokker, men et kall til en anonym blokk er ikke mulig, da den ikke har noen referanse.
- De kan inneholde en nestet blokk som er navngitt eller anonym, og de kan ogsรฅ nestes inne i en hvilken som helst blokk.
- De kan ha alle tre seksjonene, hvorav utfรธrelsesdelen er obligatorisk og de to andre er valgfrie.
Navngitte blokker
Navngitte blokker har et spesifikt og unikt navn. De lagres som databaseobjekter pรฅ serveren, slik at de kan refereres til eller brukes sรฅ lenge de er til stede. Kompileringsprosessen for navngitte blokker skjer separat nรฅr de opprettes som databaseobjekter. Noen flere egenskaper:
- Disse blokkene kan kalles fra andre blokker.
- Blokkstrukturen er den samme som en anonym blokk, bortsett fra at den aldri starter med 'DECLARE'. I stedet starter den med 'CREATE', som instruerer kompilatoren til รฅ opprette den som et databaseobjekt.
- Disse blokkene kan nestes i andre blokker og kan ogsรฅ inneholde nestede blokker.
- Navngitte blokker er i hovedsak av to typer:
- Prosedyre
- Funksjon
Du kan lรฆre mer om disse navngitte blokkene i veiledningen til prosedyrer og funksjoner.


