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.

  • 🧱 Kernidee: Code is gegroepeerd in een blok dat als geheel wordt uitgevoerd, waarbij procedurele logica wordt gemengd met SQL.
  • 📝 Verklaringgedeelte: Optioneel; declareert variabelen, cursors, uitzonderingen en subprogramma's die in het blok worden gebruikt.
  • ▶ ️ Uitvoeringssectie: Verplicht; begint met BEGIN en bevat ten minste één uitvoerbare instructie.
  • 🛡️ Uitzonderingssectie: Optioneel; begint met EXCEPTION en behandelt runtimefouten.
  • ???? ️ Twee types: Anonieme blokken hebben geen naam en worden eenmalig uitgevoerd; benoemde blokken worden opgeslagen als databaseobjecten.
  • 🔁 Benoemde blokken: Procedures en functies zijn benoemde blokken die herhaaldelijk kunnen worden aangeroepen.
  • ⛔ beëindiger: END sluit het blok af en een schuine streep stuurt het naar de compiler.

PL/SQL-blokstructuur en -syntaxis

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:

  1. Declaratiesectie
  2. Uitvoering sectie
  3. Sectie Uitzonderingafhandeling

De onderstaande afbeelding illustreert de verschillende secties van een PL/SQL-blok en hun volgorde.

PL/SQL-bloksecties en 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.

PL/SQL-bloksyntaxis

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:

  1. Anonieme blokken
  2. 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:
  1. Procedure
  2. Functie

Je kunt meer te weten komen over deze benoemde blokken in de handleiding. procedures en functies.

Veelgestelde vragen

Alleen het uitvoeringsgedeelte, dat begint met BEGIN en eindigt met END, is relevant. De declaratie- en uitzonderingsafhandelingsgedeelten zijn optioneel en kunnen worden weggelaten als ze niet nodig zijn.

Een anoniem codeblok heeft geen naam, wordt niet opgeslagen en wordt uitgevoerd binnen dezelfde sessie. Een benoemd codeblok, zoals een procedure of functie, wordt opgeslagen als een databaseobject en kan herhaaldelijk worden aangeroepen.

In tools zoals SQL*Plus geeft de schuine streep op een aparte regel de compiler aan dat het codeblok compleet is en uitgevoerd moet worden. Zonder deze schuine streep blijft de tool wachten op meer invoer.

Ja. AI kan de logica in een CREATE PROCEDURE-header plaatsen, parameters toevoegen en declaraties op de juiste plek zetten. Test het resultaat, want een opgeslagen versie heeft mogelijk expliciete parametermodi en foutafhandeling nodig.

Ja. De declaratie- en uitzonderingssecties zijn onafhankelijke opties. Een codeblok kan beginnen bij BEGIN, declaraties overslaan en toch een uitzonderingssectie vóór END bevatten om runtimefouten op te vangen.

Vat dit bericht samen met: