PL/SQL-blok: structuur, syntaxis en voorbeeld van een anoniem blok
⚡ Slimme samenvatting
Een PL/SQL-blok is de basiseenheid die PL/SQL- en SQL-instructies groepeert, zodat ze samen worden uitgevoerd in plaats van regel voor regel. Elk blok heeft een declaratie-, uitvoerings- en foutafhandelingsgedeelte, en blokken zijn ofwel anoniem ofwel benoemd.

Wat is een PL/SQL-blok?
In PL/SQL wordt code niet regel voor regel uitgevoerd; het wordt altijd in groepen uitgevoerd.ping De code wordt samengevoegd tot één element, een zogenaamd blok. In deze tutorial leer je meer over deze blokken.
Blokken bevatten zowel PL/SQL- als SQL-instructies. Al deze instructies worden als geheel uitgevoerd, in plaats van één voor één.
Blokstructuur
PL/SQL-blokken hebben een vooraf gedefinieerde structuur waarin de code is gegroepeerd. Hieronder staan de verschillende onderdelen van een PL/SQL-blok:
- Declaratiesectie
- Uitvoering sectie
- Sectie Uitzonderingafhandeling
De onderstaande afbeelding illustreert de verschillende secties van een PL/SQL-blok en hun volgorde.
Verklaring sectie
Dit is het eerste gedeelte van een PL/SQL-blok en is optioneel. In dit gedeelte worden variabelen, cursors, uitzonderingen, subprogramma's, pragma-instructies en collecties die in het blok nodig zijn, gedeclareerd. Enkele andere kenmerken van dit gedeelte:
- Dit gedeelte is optioneel en kan worden overgeslagen als er geen declaraties nodig zijn.
- Het moet het eerste onderdeel zijn van een PL/SQL-blok, indien aanwezig.
- Het begint met het sleutelwoord 'DECLARE' voor triggers en anonieme blokken. Voor andere subprogramma's is dit sleutelwoord niet aanwezig; in plaats daarvan markeert het gedeelte na de subprogrammanaam het declaratiegedeelte.
- Het moet altijd gevolgd worden door het uitvoeringsgedeelte.
Uitvoeringssectie
Het uitvoeringsgedeelte is het belangrijkste en verplichte onderdeel dat de daarin geschreven code daadwerkelijk uitvoert. PL / SQL Verwacht uitvoerbare instructies; dit blok mag niet leeg zijn en moet minstens één geldige uitvoerbare regel bevatten. Nog een paar kenmerken van dit onderdeel:
- Het kan zowel PL/SQL-code als SQL-code bevatten.
- Het kan één of meerdere blokken bevatten die in elkaar genesteld zijn.
- Het begint met het sleutelwoord 'BEGIN'.
- Het moet worden gevolgd door 'END' of, indien aanwezig, door het gedeelte voor foutafhandeling.
Sectie Afhandeling van uitzonderingen
Uitzonderingen zijn onvermijdelijke fouten die tijdens de uitvoering optreden, en om ze af te handelen, moeten we ze verwerken. Oracle Biedt een sectie voor foutafhandeling in blokken. Deze sectie kan ook PL/SQL-instructies bevatten, maar is optioneel.
- Dit is het gedeelte waar een uitzondering die in het uitvoeringsblok is opgetreden, wordt afgehandeld.
- Dit is het laatste deel van het PL/SQL-blok.
- Controle vanuit deze sectie kan nooit terugkeren naar het uitvoeringsblok.
- Het begint met het sleutelwoord 'UITZONDERING'.
- Het moet altijd gevolgd worden door het trefwoord 'END'.
Het trefwoord 'END' markeert het einde van het PL/SQL-blok.
PL/SQL-bloksyntaxis
Hieronder vindt u de syntaxis van de PL/SQL-blokstructuur.
DECLARE --optional <declarations> BEGIN --mandatory <executable statements. At least one executable statement is mandatory> EXCEPTION --optional <exception handles> END; --mandatory /
Let op: Een codeblok moet altijd gevolgd worden door een '/', waarmee de compiler informatie krijgt over het einde van het blok.
Soorten PL/SQL-blokken
PL/SQL-blokken zijn hoofdzakelijk van twee typen:
- Anonieme blokken
- Genoemde blokken
De twee worden hieronder in een oogopslag vergeleken, voordat ze elk afzonderlijk worden beschreven.
| Aspect | Anoniem blok | Benoemd blok |
|---|---|---|
| Heeft een naam | Nee | Ja |
| Opgeslagen in de database | Nee | Ja, als object. |
| Begint met | VERKLAREN of BEGINNEN | CREATE |
| Herbruikbare | Alleen dezelfde sessie | Altijd bereikbaar |
Anonieme blokken
Anonieme blokken zijn PL/SQL-blokken waaraan geen naam is toegewezen. Ze moeten in dezelfde sessie worden aangemaakt en gebruikt, omdat ze niet als databaseobjecten op de server worden opgeslagen.
Omdat ze niet in de database worden opgeslagen, is er geen aparte compilatiestap nodig. Ze worden direct geschreven en uitgevoerd, en compilatie en uitvoering vinden plaats in één proces. Nog een paar kenmerken:
- Deze blokken hebben geen referentienaam.
- Ze beginnen met het sleutelwoord 'DECLARE' of 'BEGIN'.
- Omdat ze geen referentienaam hebben, kunnen ze niet worden opgeslagen voor later gebruik en moeten ze in dezelfde sessie worden aangemaakt en uitgevoerd.
- Ze kunnen andere benoemde blokken aanroepen, maar een aanroep naar een anoniem blok is niet mogelijk, omdat daar geen referentie naar bestaat.
- Ze kunnen een genest blok bevatten dat benoemd of anoniem is, en ze kunnen ook binnen elk ander blok genest zijn.
- Ze kunnen alle drie de onderdelen bevatten, waarvan het uitvoeringsgedeelte verplicht is en de andere twee optioneel.
Genoemde blokken
Benoemde blokken hebben een specifieke en unieke naam. Ze worden als databaseobjecten op de server opgeslagen, zodat ernaar verwezen kan worden of ze gebruikt kunnen worden zolang ze aanwezig zijn. Het compilatieproces voor benoemde blokken vindt apart plaats wanneer ze als databaseobjecten worden aangemaakt. Nog een paar kenmerken:
- Deze blokken kunnen vanuit andere blokken worden opgeroepen.
- De blokstructuur is hetzelfde als die van een anoniem blok, met als enige verschil dat het nooit met 'DECLARE' begint. In plaats daarvan begint het met 'CREATE', wat de compiler de opdracht geeft om het als een databaseobject aan te maken.
- Deze blokken kunnen binnen andere blokken genesteld worden en kunnen zelf ook weer geneste blokken bevatten.
- Benoemde blokken zijn in principe van twee typen:
- Procedure
- Functie
Je kunt meer te weten komen over deze benoemde blokken in de handleiding. procedures en functies.


