Wat is een PL / SQL-blok?
In PL / SQL wordt de code niet uitgevoerd in een enkele regel, maar wordt deze altijd uitgevoerd door de code te groeperen in een enkel element genaamd Blocks. In deze tutorial leer je deze blokken kennen.
Blokken bevatten zowel PL / SQL als SQL-instructies. Al deze instructies zullen in hun geheel worden uitgevoerd in plaats van een enkele instructie tegelijk uit te voeren.
In deze tutorial leer je:
- Wat is een PL / SQL-blok?
- Blokstructuur
- PL / SQL-bloksyntaxis
- Soorten PL / SQL-blokken
Blokstructuur
PL / SQL-blokken hebben een vooraf gedefinieerde structuur waarin de code moet worden gegroepeerd. Hieronder staan verschillende secties van PL / SQL-blokken.
- Verklaring sectie
- Uitvoeringssectie
- Sectie voor het afhandelen van uitzonderingen
De onderstaande afbeelding illustreert de verschillende PL / SQL-blokken en hun sectievolgorde.
Verklaring sectie
Dit is het eerste deel van de PL / SQL-blokken. Deze sectie is een optioneel onderdeel. Dit is de sectie waarin de declaratie van variabelen, cursors, uitzonderingen, subprogramma's, pragma-instructies en verzamelingen die nodig zijn in het blok, worden gedeclareerd. Hieronder staan nog enkele kenmerken van dit onderdeel.
- Deze specifieke sectie is optioneel en kan worden overgeslagen als er geen declaraties nodig zijn.
- Dit zou de eerste sectie in een PL / SQL-blok moeten zijn, indien aanwezig.
- Deze sectie begint met het trefwoord 'DECLARE' voor triggers en anonieme blokkering. Voor andere subprogramma's zal dit trefwoord niet aanwezig zijn. In plaats daarvan markeert het deel na de definitie van de subprogrammanaam de declaratiesectie.
- Dit gedeelte moet altijd worden gevolgd door het uitvoeringsgedeelte.
Uitvoeringssectie
Het uitvoeringsgedeelte is het belangrijkste en verplichte gedeelte dat de code die erin is geschreven, daadwerkelijk uitvoert. Aangezien de PL / SQL de uitvoerbare instructies van dit blok verwacht, kan dit geen leeg blok zijn, dwz het moet ten minste één geldige uitvoerbare coderegel bevatten. Hieronder staan nog enkele kenmerken van dit onderdeel.
- Dit kan zowel PL / SQL-code als SQL-code bevatten.
- Dit kan een of meerdere blokken bevatten als een genest blok.
- Deze sectie begint met het trefwoord 'BEGIN'.
- Dit gedeelte moet worden gevolgd door 'EINDE' of het gedeelte over het afhandelen van uitzonderingen (indien aanwezig)
Sectie voor het afhandelen van uitzonderingen:
De uitzondering is onvermijdelijk in het programma dat tijdens runtime plaatsvindt en om dit af te handelen heeft Oracle een sectie voor het afhandelen van uitzonderingen in blokken voorzien. Deze sectie kan ook PL / SQL-instructies bevatten. Dit is een optioneel gedeelte van de PL / SQL-blokken.
- Dit is de sectie waar de uitzondering die in het uitvoeringsblok is opgeworpen, wordt afgehandeld.
- Deze sectie is het laatste deel van het PL / SQL-blok.
- Controle vanuit deze sectie kan nooit terugkeren naar het uitvoeringsblok.
- Deze sectie begint met het trefwoord 'UITZONDERING'.
- Deze sectie moet altijd worden gevolgd 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 --optionalBEGIN --mandatory EXCEPTION --optional END; --mandatory/
Opmerking: een blok moet altijd worden gevolgd door '/' die de informatie over het einde van het blok naar de compiler stuurt.
Soorten PL / SQL-blokken
PL / SQL-blokken bestaan hoofdzakelijk uit twee typen.
- Anonieme blokken
- Benoemde blokken
Anonieme blokken:
Anonieme blokken zijn PL / SQL-blokken waaraan geen naam is toegewezen. Ze moeten in dezelfde sessie worden gemaakt en gebruikt, omdat ze niet als databaseobjecten op de server worden opgeslagen.
Omdat ze niet in de database hoeven te worden opgeslagen, zijn er geen compilatiestappen nodig. Ze worden rechtstreeks geschreven en uitgevoerd, en compilatie en uitvoering gebeuren in één proces.
Hieronder staan nog enkele kenmerken van anonieme blokken.
- Voor deze blokken is geen referentienaam opgegeven.
- Deze blokken beginnen met het trefwoord 'DECLARE' of 'BEGIN'.
- Aangezien deze blokken geen referentienaam hebben, kunnen deze niet worden opgeslagen voor later gebruik. Ze worden in dezelfde sessie gemaakt en uitgevoerd.
- Ze kunnen de andere benoemde blokken aanroepen, maar aanroepen naar een anoniem blok is niet mogelijk omdat het geen referentie heeft.
- Het kan een genest blok bevatten dat een naam of anoniem kan hebben. Het kan ook in willekeurige blokken worden genest.
- Deze blokken kunnen alle drie de secties van het blok hebben, waarin de uitvoeringssectie verplicht is, de andere twee secties zijn optioneel.
Benoemde blokken:
Benoemde blokken hebben een specifieke en unieke naam voor hen. Ze worden als databaseobjecten op de server opgeslagen. Omdat ze beschikbaar zijn als databaseobjecten, kan er naar worden verwezen of kunnen ze worden gebruikt zolang ze aanwezig zijn op de server. Het compilatieproces voor benoemde blokken gebeurt afzonderlijk terwijl ze worden gemaakt als databaseobjecten.
Hieronder staan nog enkele kenmerken van benoemde blokken.
- Deze blokken kunnen vanuit andere blokken worden aangeroepen.
- De blokstructuur is hetzelfde als een anoniem blok, behalve dat het nooit zal beginnen met het trefwoord 'DECLARE'. In plaats daarvan begint het met het sleutelwoord 'CREATE' dat de compiler instrueert om het als een databaseobject te maken.
- Deze blokken kunnen in andere blokken worden genest. Het kan ook geneste blokken bevatten.
- Benoemde blokken zijn in principe van twee soorten:
- Procedure
- Functie
Overzicht
Na deze tutorial moet u zich bewust zijn van PL / SQL-blokken en de typen, verschillende secties van blokken en hun gebruik. De gedetailleerde beschrijving van de genoemde PL / SQL-blokken zal in de latere tutorial worden behandeld.