PL/SQL-Block: Struktur, Syntax & anonymes Beispiel

โšก Intelligente Zusammenfassung

Ein PL/SQL-Block ist die Grundeinheit, die PL/SQL- und SQL-Anweisungen gruppiert, sodass sie gemeinsam und nicht Zeile fรผr Zeile ausgefรผhrt werden. Jeder Block enthรคlt einen Deklarations-, einen Ausfรผhrungs- und einen Ausnahmebehandlungsabschnitt und kann anonym oder benannt sein.

  • ๐Ÿงฑ Kernidee: Code wird in einem Block zusammengefasst, der als Ganzes ausgefรผhrt wird und prozedurale Logik mit SQL vermischt.
  • ๐Ÿ“ Erklรคrungsabschnitt: Optional; deklariert Variablen, Cursor, Ausnahmen und Unterprogramme, die im Block verwendet werden.
  • โ–ถ ๏ธ Ausfรผhrungsabschnitt: Erforderlich; beginnt mit BEGIN und enthรคlt mindestens eine ausfรผhrbare Anweisung.
  • ๐Ÿ›ก๏ธ Ausnahmeabschnitt: Optional; beginnt mit EXCEPTION und behandelt Laufzeitfehler.
  • ๐Ÿท๏ธ Zwei Arten: Anonyme Blรถcke sind unbenannt und werden einmal ausgefรผhrt; benannte Blรถcke werden als Datenbankobjekte gespeichert.
  • ๐Ÿ” Benannte Blรถcke: Prozeduren und Funktionen sind benannte Blรถcke, die wiederholt aufgerufen werden kรถnnen.
  • โ›” Abschluss: END schlieรŸt den Block, und ein Schrรคgstrich sendet ihn an den Compiler.

PL/SQL-Blockstruktur und Syntax

Was ist ein PL/SQL-Block?

In PL/SQL wird Code nicht einzeilig ausgefรผhrt, sondern immer in Gruppen.ping Der Code wird in ein einzelnes Element, einen sogenannten Block, unterteilt. In diesem Tutorial lernen Sie diese Blรถcke kennen.

Blรถcke enthalten sowohl PL/SQL- als auch SQL-Anweisungen. Alle diese Anweisungen werden als Ganzes und nicht einzeln ausgefรผhrt.

Blockstruktur

PL/SQL-Blรถcke besitzen eine vordefinierte Struktur, in der der Code gruppiert ist. Im Folgenden sind die verschiedenen Abschnitte eines PL/SQL-Blocks aufgefรผhrt:

  1. Deklarationsabschnitt
  2. Ausfรผhrungsabschnitt
  3. Abschnitt zur Ausnahmebehandlung

Das Bild unten veranschaulicht die verschiedenen PL/SQL-Blockabschnitte und deren Reihenfolge.

PL/SQL-Blockabschnitte und Reihenfolge

Deklarationsabschnitt

Dies ist der erste Abschnitt eines PL/SQL-Blocks und optional. In diesem Abschnitt werden Variablen, Cursor, Ausnahmen, Unterprogramme, Pragma-Anweisungen und Sammlungen deklariert, die im Block benรถtigt werden. Weitere Merkmale dieses Abschnitts:

  • Dieser Abschnitt ist optional und kann รผbersprungen werden, wenn keine Deklarationen erforderlich sind.
  • Es sollte der erste Abschnitt in einem PL/SQL-Block sein, sofern vorhanden.
  • Es beginnt mit dem Schlรผsselwort โ€žDECLAREโ€œ fรผr Trigger und anonyme Blรถcke. Fรผr andere Unterprogramme ist dieses Schlรผsselwort nicht vorhanden; stattdessen kennzeichnet der Teil nach dem Unterprogrammnamen den Deklarationsabschnitt.
  • Im Anschluss daran sollte stets der Ausfรผhrungsteil folgen.

Ausfรผhrungsabschnitt

Der Ausfรผhrungsteil ist der wichtigste und obligatorische Teil, der den darin geschriebenen Code tatsรคchlich ausfรผhrt. PL / SQL Dieser Block erwartet ausfรผhrbare Anweisungen, darf nicht leer sein und muss mindestens eine gรผltige ausfรผhrbare Zeile enthalten. Weitere Merkmale dieses Abschnitts:

  • Es kann sowohl PL/SQL-Code als auch SQL-Code enthalten.
  • Es kann einen oder mehrere Blรถcke als verschachtelte Blรถcke enthalten.
  • Es beginnt mit dem Schlรผsselwort 'BEGIN'.
  • Darauf sollte entweder 'END' oder, falls vorhanden, der Abschnitt zur Ausnahmebehandlung folgen.

Abschnitt zur Ausnahmebehandlung

Ausnahmen sind unvermeidbare Fehler, die zur Laufzeit auftreten, und es gilt, sie zu behandeln. Oracle Bietet einen Abschnitt zur Ausnahmebehandlung in Blรถcken. Dieser Abschnitt kann auch PL/SQL-Anweisungen enthalten und ist optional.

  • In diesem Abschnitt wird eine im Ausfรผhrungsblock ausgelรถste Ausnahme behandelt.
  • Es handelt sich um den letzten Teil des PL/SQL-Blocks.
  • Die Kontrolle von diesem Abschnitt aus kann niemals zum Ausfรผhrungsblock zurรผckkehren.
  • Es beginnt mit dem Schlรผsselwort โ€žAUSNAHMEโ€œ.
  • Es sollte stets vom Schlรผsselwort โ€žENDโ€œ gefolgt werden.

Das Schlรผsselwort 'END' markiert das Ende des PL/SQL-Blocks.

PL/SQL-Blocksyntax

Nachfolgend finden Sie die Syntax der PL/SQL-Blockstruktur.

PL/SQL-Blocksyntax

DECLARE --optional
<declarations>

BEGIN --mandatory
<executable statements. At least one executable statement is mandatory>

EXCEPTION --optional
<exception handles>

END; --mandatory
/

Hinweis: Nach jedem Block sollte ein '/' folgen, der dem Compiler Informationen รผber das Ende des Blocks รผbermittelt.

Arten von PL/SQL-Blรถcken

PL/SQL-Blรถcke lassen sich im Wesentlichen in zwei Typen unterteilen:

  1. Anonyme Blรถcke
  2. Benannte Blรถcke

Die beiden werden im Folgenden kurz verglichen, bevor sie einzeln beschrieben werden.

Aspekt Anonymer Block Benannter Block
Hat einen Namen Nein Ja
In der Datenbank gespeichert Nein Ja, als Objekt
Beginnt mit DEKLAREN oder BEGINNEN CREATE
Mehrweg Nur die gleiche Sitzung Jederzeit abrufbar

Anonyme Blockaden

Anonyme Blรถcke sind PL/SQL-Blรถcke ohne zugewiesenen Namen. Sie mรผssen in derselben Sitzung erstellt und verwendet werden, da sie nicht als Datenbankobjekte auf dem Server gespeichert werden.

Da sie nicht in der Datenbank gespeichert werden, benรถtigen sie keinen separaten Kompilierungsschritt. Sie werden direkt geschrieben und ausgefรผhrt, wobei Kompilierung und Ausfรผhrung in einem einzigen Prozess erfolgen. Weitere Merkmale:

  • Diese Blรถcke haben keinen Referenznamen.
  • Sie beginnen mit dem Schlรผsselwort โ€žDECLAREโ€œ oder โ€žBEGINโ€œ.
  • Da sie keinen Referenznamen haben, kรถnnen sie nicht zur spรคteren Verwendung gespeichert werden und mรผssen in derselben Sitzung erstellt und ausgefรผhrt werden.
  • Sie kรถnnen andere benannte Blรถcke aufrufen, aber ein Aufruf eines anonymen Blocks ist nicht mรถglich, da dieser keine Referenz hat.
  • Sie kรถnnen einen verschachtelten Block enthalten, der benannt oder anonym ist, und sie kรถnnen auch in jedem beliebigen Block verschachtelt sein.
  • Sie kรถnnen alle drei Abschnitte enthalten, wobei der Ausfรผhrungsabschnitt obligatorisch und die beiden anderen optional sind.

Benannte Blรถcke

Benannte Blรถcke besitzen einen spezifischen und eindeutigen Namen. Sie werden als Datenbankobjekte auf dem Server gespeichert und kรถnnen daher referenziert und verwendet werden, solange sie vorhanden sind. Die Kompilierung benannter Blรถcke erfolgt separat bei ihrer Erstellung als Datenbankobjekte. Weitere Merkmale:

  • Diese Bausteine โ€‹โ€‹kรถnnen von anderen Bausteinen aus aufgerufen werden.
  • Die Blockstruktur entspricht der eines anonymen Blocks, mit der Ausnahme, dass sie niemals mit 'DECLARE' beginnt. Stattdessen beginnt sie mit 'CREATE', wodurch der Compiler angewiesen wird, sie als Datenbankobjekt zu erstellen.
  • Diese Blรถcke kรถnnen in andere Blรถcke verschachtelt werden und auch verschachtelte Blรถcke enthalten.
  • Es gibt grundsรคtzlich zwei Arten von benannten Blรถcken:
  1. Ablauf
  2. Funktion

Mehr รผber diese benannten Blรถcke erfahren Sie im Leitfaden zu Verfahren und Funktionen.

Hรคufig gestellte Fragen

Nur der Ausfรผhrungsteil, der mit BEGIN beginnt und mit END endet. Die Deklarations- und Ausnahmebehandlungsteile sind optional und kรถnnen weggelassen werden, wenn sie nicht benรถtigt werden.

Ein anonymer Block hat keinen Namen, wird nicht gespeichert und wird in derselben Sitzung ausgefรผhrt. Ein benannter Block, wie beispielsweise eine Prozedur oder Funktion, wird als Datenbankobjekt gespeichert und kann wiederholt aufgerufen werden.

In Tools wie SQL*Plus signalisiert der Schrรคgstrich in einer eigenen Zeile dem Compiler, dass der Block abgeschlossen ist und ausgefรผhrt werden soll. Ohne ihn wartet das Tool weiterhin auf Eingaben.

Ja. KI kann die Logik in einem CREATE PROCEDURE-Header kapseln, Parameter hinzufรผgen und Deklarationen an die richtige Stelle verschieben. Testen Sie das Ergebnis, da eine gespeicherte Version mรถglicherweise explizite Parametermodi und eine Fehlerbehandlung benรถtigt.

Ja. Deklarations- und Ausnahmeabschnitte sind unabhรคngige Optionen. Ein Block kann mit BEGIN beginnen, Deklarationen รผberspringen und trotzdem vor END einen EXCEPTION-Abschnitt enthalten, um Laufzeitfehler abzufangen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: