logo

PL/SQL-Einführung

PL/SQL ist eine blockstrukturierte Sprache, die es Entwicklern ermöglicht, die Leistungsfähigkeit von SQL mit prozeduralen Anweisungen zu kombinieren. Alle Anweisungen eines Blocks werden auf einmal an die Oracle-Engine übergeben, was die Verarbeitungsgeschwindigkeit erhöht und den Datenverkehr verringert.

Grundlagen von PL/SQL

  • •PL/SQL steht für Procedural Language-Erweiterungen der Structured Query Language (SQL).
  • PL/SQL ist eine Kombination aus SQL und den prozeduralen Merkmalen von Programmiersprachen.
  • Oracle verwendet eine PL/SQL-Engine zur Verarbeitung der PL/SQL-Anweisungen.
  • PL/SQL enthält prozedurale Sprachelemente wie Bedingungen und Schleifen. Es ermöglicht die Deklaration von Konstanten und Variablen, Prozeduren und Funktionen, Typen und Variablen dieser Typen und Trigger.

Nachteile von SQL:

  • SQL bietet den Programmierern keine Technik zur Bedingungsprüfung, Schleife und Verzweigung.
  • SQL-Anweisungen werden einzeln an die Oracle-Engine übergeben, was den Datenverkehr erhöht und die Geschwindigkeit verringert.
  • SQL bietet keine Möglichkeit zur Fehlerprüfung bei der Manipulation von Daten.

Funktionen von PL/SQL:



  1. PL/SQL ist im Grunde eine prozedurale Sprache, die die Funktionalität der Entscheidungsfindung, Iteration und viele weitere Funktionen prozeduraler Programmiersprachen bietet.
  2. PL/SQL kann mit einem einzigen Befehl mehrere Abfragen in einem Block ausführen.
  3. Man kann eine PL/SQL-Einheit wie Prozeduren, Funktionen, Pakete, Trigger und Typen erstellen, die zur Wiederverwendung durch Anwendungen in der Datenbank gespeichert werden.
  4. PL/SQL bietet eine Funktion zur Behandlung der Ausnahme, die im PL/SQL-Block auftritt, der als Ausnahmebehandlungsblock bezeichnet wird.
  5. In PL/SQL geschriebene Anwendungen sind auf Computerhardware oder Betriebssysteme portierbar, auf denen Oracle betriebsbereit ist.
  6. PL/SQL Bietet umfassende Fehlerprüfung.

Unterschiede zwischen SQL und PL/SQL:

SQL PL/SQL
SQL ist eine einzelne Abfrage, die zum Ausführen von DML- und DDL-Operationen verwendet wird. PL/SQL ist ein Codeblock, der zum Schreiben der gesamten Programmblöcke/Prozedur/Funktion usw. verwendet wird.
Es ist deklarativ und definiert, was getan werden muss, und nicht, wie Dinge getan werden müssen. PL/SQL ist prozedural und definiert, wie die Dinge erledigt werden müssen.
Als einzelne Anweisung ausführen. Als ganzen Block ausführen.
Wird hauptsächlich zur Manipulation von Daten verwendet. Wird hauptsächlich zum Erstellen einer Anwendung verwendet.
Es darf keinen PL/SQL-Code enthalten. Es ist eine Erweiterung von SQL und kann daher SQL enthalten.

Struktur des PL/SQL-Blocks:

PL/SQL erweitert SQL durch das Hinzufügen von Konstrukten, die in prozeduralen Sprachen vorkommen, was zu einer Struktursprache führt, die leistungsfähiger als SQL ist. Die Grundeinheit in PL/SQL ist ein Block. Alle PL/SQL-Programme bestehen aus Blöcken, die ineinander verschachtelt werden können.

Normalerweise führt jeder Block eine logische Aktion im Programm aus. Ein Block hat folgenden Aufbau:

 DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
  • Der Deklarationsabschnitt beginnt mit ERKLÄREN Schlüsselwort, in dem Variablen, Konstanten und Datensätze als Cursor deklariert werden können, die Daten vorübergehend speichern. Es besteht im Wesentlichen aus der Definition von PL/SQL-Bezeichnern. Dieser Teil des Codes ist optional.
  • Der Ausführungsabschnitt beginnt mit BEGINNEN und endet mit ENDE Schlüsselwort. Dies ist ein obligatorischer Abschnitt und hier wird die Programmlogik geschrieben, um beliebige Aufgaben wie Schleifen und bedingte Anweisungen auszuführen. Es unterstützt alles DML Befehle, DDL Befehle und integrierte SQL*PLUS-Funktionen.
  • Der Ausnahmeabschnitt beginnt mit AUSNAHME Schlüsselwort. Dieser Abschnitt ist optional und enthält Anweisungen, die ausgeführt werden, wenn ein Laufzeitfehler auftritt. Eventuelle Ausnahmen können in diesem Abschnitt behandelt werden.

PL/SQL-Bezeichner

Es gibt mehrere PL/SQL-Bezeichner wie Variablen, Konstanten, Prozeduren, Cursor, Trigger usw.

  1. Variablen : Wie bei mehreren anderen Programmiersprachen müssen Variablen in PL/SQL vor ihrer Verwendung deklariert werden. Sie sollten ebenfalls einen gültigen Namen und Datentyp haben. Syntax zur Variablendeklaration:
variable_name datatype [NOT NULL := value ];>
  1. Beispiel, um zu zeigen, wie Variablen in PL/SQL deklariert werden:

C




SQL>SET SERVEROUTPUT ON;> SQL>ERKLÄREN> >var1 INTEGER;> >var2 REAL;> >var3 varchar2(20) ;> BEGIN> >null;> END;> />

>

>

  1. Ausgabe:
PL/SQL procedure successfully completed.>
  1. Erläuterung:
    • SETZEN SIE SERVEROUTPUT EIN : Wird verwendet, um den von dbms_output verwendeten Puffer anzuzeigen.
    • var1 INTEGER : Es ist die Deklaration einer Variablen mit dem Namen var1 welches vom ganzzahligen Typ ist. Es gibt viele andere Datentypen, die verwendet werden können, wie Float, Int, Real, Smallint, Long usw. Es unterstützt auch in SQL verwendete Variablen wie NUMBER(prec, Scale), Varchar, Varchar2 usw.
    • PL/SQL-Prozedur erfolgreich abgeschlossen.: Es wird angezeigt, wenn der Code erfolgreich kompiliert und ausgeführt wurde.
    • Schrägstrich (/) nach END;: Der Schrägstrich (/) weist SQL*Plus an, den Block auszuführen.
    • Zuweisungsoperator (:=) : Wird verwendet, um einer Variablen einen Wert zuzuweisen.
  2. Ausgabe anzeigen : Die Ausgaben werden mithilfe von DBMS_OUTPUT angezeigt, einem integrierten Paket, das es dem Benutzer ermöglicht, Ausgaben und Debugging-Informationen anzuzeigen und Nachrichten von PL/SQL-Blöcken, Unterprogrammen, Paketen und Triggern zu senden. Sehen wir uns ein Beispiel an, um zu sehen, wie eine Nachricht mit PL/SQL angezeigt wird:

C




Spring-Boot-Architektur
SQL>SET SERVEROUTPUT ON;> SQL>ERKLÄREN> >var varchar2(40) :=>'I love GeeksForGeeks'> ;> >BEGIN> >dbms_output.put_line(var);> >END;> >/>

>

>

  1. Ausgabe:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
  1. Erläuterung:
    • dbms_output.put_line : Dieser Befehl wird verwendet, um die PL/SQL-Ausgabe auf einen Bildschirm zu leiten.
  2. Kommentare verwenden : Wie in vielen anderen Programmiersprachen können auch in PL/SQL Kommentare in den Code eingefügt werden, die keine Auswirkung auf den Code haben. Es gibt zwei Syntaxen zum Erstellen von Kommentaren in PL/SQL:
    • Einzeiliger Kommentar: Um einen einzeiligen Kommentar zu erstellen, verwenden Sie das Symbol– –wird eingesetzt.
    • Mehrzeiliger Kommentar: Um Kommentare zu erstellen, die sich über mehrere Zeilen erstrecken, ist das Symbol/*Und*/wird eingesetzt.
  3. Eingaben des Benutzers entgegennehmen : Genau wie in anderen Programmiersprachen können wir auch in PL/SQL Eingaben vom Benutzer entgegennehmen und in einer Variablen speichern. Sehen wir uns ein Beispiel an, um zu zeigen, wie Eingaben von Benutzern in PL/SQL entgegengenommen werden:

C




SQL>SET SERVEROUTPUT ON;> SQL>ERKLÄREN> >-- taking input>for> variable a> >a number := &a;> > >-- taking input>for> variable b> >b varchar2(30) := &b;> >BEGIN> >null;> >END;> >/>

>

>

  1. Ausgabe:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
  1. (***) Sehen wir uns ein Beispiel für PL/SQL an, um alle oben genannten Konzepte in einem einzigen Codeblock zu demonstrieren.

C




--PL/SQL code to print sum of two numbers taken from the user.> SQL>SET SERVEROUTPUT ON;> SQL>ERKLÄREN> > >-- taking input>for> variable a> >a integer := &a ;> > >-- taking input>for> variable b> >b integer := &b ;> >c integer ;> >BEGIN> >c := a + b ;> >dbms_output.put_line(>'Sum of '>||a||>' and '>||b||>' is = '>||c);> >END;> >/>

>

>

Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>

PL/SQL-Ausführungsumgebung:

Die PL/SQL-Engine befindet sich in der Oracle-Engine. Die Oracle-Engine kann nicht nur einzelne SQL-Anweisungen, sondern auch Blöcke aus vielen Anweisungen verarbeiten. Der Aufruf der Oracle-Engine muss nur einmal erfolgen, um eine beliebige Anzahl von SQL-Anweisungen auszuführen, wenn diese SQL-Anweisungen sind werden in einem PL/SQL-Block gebündelt.