PL / SQL ist eine prozedurale Sprache, die die Mängel überwindet, mit denen sie konfrontiert ist Strukturierte Abfragesprache . Es ist eine Erweiterung von SQL und wir können sogar SQL-Abfragen problemlos in PL / SQL-Anwendungen oder -Programmen verwenden. In diesem PL / SQL-Tutorial werden wir die Grundkonzepte von PL / SQL im Detail durchgehen. Die folgenden Themen werden in diesem Artikel behandelt.
- Was ist PL / SQL?
- Blockstrukturen in PL / SQL
- PL / SQL-Variablen
- Funktion in PL / SQL
- PL / SQL-Prozedur
- Verschachtelter Block
- IF-Anweisung
- CASE-Erklärung
- Schleifenanweisung
- Außergewöhnliches Handling
Was ist PL / SQL?
Es steht für prozedurale Spracherweiterung auf die Strukturierte Abfragesprache . Oracle hat PL / SQL erstellt, das einige Einschränkungen von SQL erweitert, um eine umfassendere Lösung für die Erstellung geschäftskritischer Anwendungen bereitzustellen, die auf dem Oracle ausgeführt werden .
Eigenschaften
PL / SQL bietet die Funktionalität einer prozeduralen Sprache wie Entscheidungsfindung, Iteration usw.
Mit einem einzigen Befehl kann PL / SQL eine Reihe von Abfragen ausführen.
Wir können auch PL / SQL-Einheiten wie Funktionen, Trigger, Prozeduren usw. wiederverwenden, die nach der Erstellung in der Datenbank gespeichert sind.
PL / SQL verfügt auch über einen Ausnahmebehandlungsblock, der die Ausnahmen in PL / SQL behandelt.
Eine umfassende Fehlerprüfung ist auch mit PL / SQL möglich
Die in PL / SQL geschriebenen Anwendungen können auf andere Hardware und Betriebssysteme portiert werden, sofern Oracle betriebsbereit sein muss.
PL / SQL gegen SQL
SQL | PL / SQL |
SQL ist eine einzelne Abfrage, mit der DDL- und DML-Operationen ausgeführt werden | PL / SQL ist ein Codeblock, mit dem ein gesamtes Programm oder eine Prozedur / Funktion usw. definiert wird |
Es definiert nicht wirklich, wie Dinge getan werden müssen, sondern definiert, was getan werden muss | PL / SQL definiert, wie Dinge getan werden müssen |
Es führt eine einzelne Anweisung aus | Es führt einen Anweisungsblock gleichzeitig aus. |
SQL wird hauptsächlich zum Bearbeiten der Daten verwendet | PL / SQL wird dagegen zum Erstellen von Anwendungen verwendet |
Es darf keinen PL / SQL-Code enthalten | Da es sich um eine SQL-Erweiterung handelt, kann sie SQL-Code enthalten |
Stellenbeschreibung für Big Data-Entwickler
Blockstrukturen in PL / SQL
PL / SQL organisiert den Code normalerweise in Blöcken. Der Codeblock ohne Namen wird als anonymer Block bezeichnet. Es wird als anonymer Block bezeichnet, da es nicht in der Oracle-Datenbank gespeichert ist. Schauen wir uns einen anonymen Block in PL / SQL an.
[DECLARE] Deklarationsanweisungen [BEGIN] Ausführungsanweisungen [EXCEPTION] Ausnahmeanweisungen END /
Wenn wir uns das oben gezeigte Diagramm ansehen, können wir sehen, dass die Blockstruktur in vier Teile unterteilt ist, d. H. Deklaration, Anfang, Ausnahme und Ende. Versuchen wir zu verstehen, wie die Blockstruktur in PL / SQL funktioniert. Von all diesen Abschnitten ist der Ausführungsabschnitt obligatorisch und alle anderen sind optional.
ERKLÄREN Das Schlüsselwort wird für den Deklarationsabschnitt verwendet, um Datentypen und Strukturen wie Variablen, Funktionen usw. zu deklarieren.
START Das Schlüsselwort wird für den Ausführungsabschnitt verwendet. Es ist obligatorisch und enthält alle Anweisungen, die ausgeführt werden müssen. In diesem Block wird die Geschäftslogik definiert. In diesem Block können sowohl prozedurale als auch SQL-Anweisungen verwendet werden.
Das AUSNAHME Das Schlüsselwort wird für den Ausnahmeabschnitt verwendet. Es enthält alle Ausnahmeanweisungen.
ENDE Das Schlüsselwort markiert das Ende des Blocks und der Schrägstrich '/' gibt an, welches Tool Sie verwenden (Oracle Database Tool), um den PL / SQL-Block auszuführen.
Hier ist ein einfaches Beispiel, um zu zeigen, wie wir den PL / SQL-Code verwenden können.
BEGIN NULL END /
Nachdem wir nun wissen, wie die Blockstruktur in PL / SQL funktioniert, wollen wir die verschiedenen Aspekte von PL / SQL wie das Deklarieren, Benennen und Zuweisen von Werten zu den Variablen verstehen.
PL / SQL-Variablen
Die Variable in PL / SQL ist im Grunde ein variierender Name oder ein temporärer Speicherort, der einen bestimmten Datentyp unterstützt. Lassen Sie uns einen Blick darauf werfen, wie wir die Variablen in einem PL / SQL-Programm verwenden können.
Variable Benennungsregeln
PL / SQL befolgt die folgenden Regeln zum Benennen von Variablen.
Die Variable darf nicht länger als 31 Zeichen sein
Der Name der Variablen sollte mit einem ASCII-Zeichen beginnen. Da bei PL / SQL zwischen Groß- und Kleinschreibung unterschieden wird, sind Groß- und Kleinbuchstaben unterschiedliche Variablen.
Nach dem ersten Zeichen muss ein Sonderzeichen ($, _) oder eine beliebige Zahl stehen.
Regeln der Namensgebung
Verwenden Sie die folgenden unten aufgeführten Namenskonventionen, um die Variablen zu verwenden.
Präfix | Datentyp |
v_ | VARCHAR2 |
n_ | NUMMER |
t_ | TABELLE |
r_ | REIHE |
d_ | DATUM |
b_ | BOOLEAN |
Erklärung
Versuchen wir zu verstehen, wie die Variablendeklaration in PL / SQL erfolgt
Die Deklaration enthält den Variablennamen, gefolgt vom Datentyp und durch ein Semikolon getrennt. Das folgende Beispiel zeigt, wie Sie eine Variable in PL / SQL deklarieren können.
DECLARE v_name VARCHAR (25) n_age NUMBER (3) BEGIN NULL END
Sie können auch die Länge des Datentyps hinzufügen, wie im obigen Beispiel beschrieben.
Anker
Der Anker bezieht sich im Wesentlichen auf die Verwendung des Schlüsselworts% TYPE, mit dem eine Variable mit dem Datentyp deklariert wird, der dem Datentyp einer Spalte einer bestimmten Spalte in einer Tabelle zugeordnet ist.
Schauen Sie sich ein Beispiel an, um dies zu verstehen. Angenommen, wir haben eine Tabelle MITARBEITER, wir können die Anker folgendermaßen verwenden.
DECLARE v_name EMPLOYEE.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN NULL END /
Zuordnung
Die Zuweisung von Variablen ist recht einfach. Mit dem Zuweisungsoperator können Sie einer Variablen Werte zuweisen. Das folgende Beispiel zeigt, wie wir einer Variablen Werte zuweisen können.
DECLARE v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /
Initialisierung
Wir können auch im Deklarationsabschnitt einen Wert für die Variable initialisieren. Das folgende Beispiel zeigt, wie wir Werte für eine Variable initialisieren können.
DECLARE v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' BEGIN NULL END /
Nachdem wir nun wissen, wie wir mit den Variablen arbeiten können, versuchen wir zu verstehen, wie wir Funktionen in PL / SQL verwenden.
Funktion in PL / SQL
Eine Funktion in PL / SQL ist im Grunde ein benannter Block, der einen Wert zurückgibt. Es wird auch als Unterprogramm oder Unterprogramm bezeichnet. Die folgende Syntax zeigt, wie wir Funktionen in PL / SQL verwenden können.
CREATE [OR REPLACE] FUNCTION Funktionsname [(Parameter_1 [IN] [OUT] Datentyp, Parameter_2 [IN] [OUT] Datentyp, Parameter_N [IN] [OUT] Datentyp] RETURN return_data_type IS BEGIN-Anweisungen return return_data_type EXCEPTION END /
Zunächst müssen Sie nach dem Schlüsselwort einen Funktionsnamen angeben. Der Funktionsname muss mit einem Verb beginnen. Eine Funktion kann keinen, einen oder mehrere Parameter haben, die wir in Parametern angeben. Wir müssen den Datentyp jedes Parameters explizit angeben, und dann kommt der Modus, der eine der folgenden Möglichkeiten bietet.
IM - Der Parameter IN ist schreibgeschützt.
AUS - Es ist ein schreibgeschützter Parameter
IN OUT - Der Parameter IN OUT ist sowohl ein Lese- als auch ein Schreibparameter.
Hier ist ein einfaches Beispiel, um zu zeigen, wie wir Funktionen in PL / SQL verwenden.
CREATE OR REPLACE FUNCTION try_parse (iv_number IN VARCHAR2) RETURN NUMBER BEGIN RETURN to_number (iv_number) AUSNAHME, WENN andere DANN NULL END RETURN
Eine Funktion aufrufen
Versuchen wir im folgenden Beispiel, die Funktion aufzurufen, die wir in einem anonymen Block erstellt haben.
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_x Nummer n_y Nummer n_z Nummer BEGIN n_x: = try_parse ('256') n_y: = try_parse ('29 .72 ') n_z: = try_parse (' pqrs ') DBMS_OUTPUT.PUT_LINE (n_LUT) n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /
Wir können die Funktion auch in einer SELECT-Anweisung aufrufen. Nachdem wir nun wissen, wie wir Funktionen in PL / SQL verwenden können, versuchen wir zu verstehen, wie wir mit Prozeduren in PL / SQL arbeiten.
PL / SQL-Prozedur
Eine Prozedur ist im Grunde ein Block, der eine bestimmte Aufgabe ausführt. Mithilfe einer Prozedur können wir komplexe Geschäftslogiken umschließen oder kapseln und sie sowohl in der Anwendungs- als auch in der Datenbankebene wiederverwenden.
Schauen wir uns ein einfaches Beispiel an, um zu verstehen, wie die Prozedur in PL / SQL funktioniert
VERFAHREN ERSTELLEN ODER ERSETZEN adjust_salary (in_employee_id IN EMPLOYEES.EMPLOYEE_ID% TYPE, in_percent IN NUMBER) BEGINNEN - Gehalt des Mitarbeiters aktualisieren
Im obigen Beispiel haben wir zwei Parameter: Die Prozedur passt das Gehalt um einen bestimmten Prozentsatz an und das Schlüsselwort UPDATE aktualisiert den Wert in den Gehaltsinformationen.
Prozedur-Header
Der Abschnitt vor dem Schlüsselwort IS wird als Prozedurheader bezeichnet. Im Folgenden sind einige Hinweise aufgeführt, mit denen Sie bei der Arbeit mit Prozeduren vertraut sein müssen.
Schema - Dies ist der optionale Name des Schemas, zu dem die Prozedur gehört.
Name - Der Name der Prozedur, die mit einem Verb beginnen soll.
Parameter - Dies ist die optionale Liste von Parametern.
AUTHID - Es wird festgelegt, ob die Prozedur mit den Berechtigungen des aktuellen Benutzers oder des ursprünglichen Eigentümers der Prozedur ausgeführt wird.
Java-Unterschied zwischen Hashmap und Hashtable
Verfahrenskörper
Alles, was nach dem IS-Schlüsselwort kommt, wird als Prozedurkörper bezeichnet. Wir haben die Deklarations-, Ausnahme- und Ausführungsanweisungen im Prozedurkörper. Im Gegensatz zur Funktion wird das Schlüsselwort RETURN in einer Prozedur verwendet, um die Ausführung anzuhalten und das Steuerelement an den Aufrufer zurückzugeben.
Eine Prozedur aufrufen
Lassen Sie uns sehen, wie wir eine Prozedur in PL / SQL aufrufen können.
EXEC-Prozedurname (param1, param2 & hellipparamN)
Wir können die Prozeduren ohne Parameter aufrufen, indem wir nur das EXEC-Schlüsselwort und den Prozedurnamen verwenden. Nachdem wir nun wissen, wie wir mit Prozeduren arbeiten können, versuchen wir zu verstehen, wie verschachtelte Blöcke in PL / SQL verwendet werden.
Verschachtelter Block
Ein verschachtelter Block ist nichts anderes als eine Kombination aus einem oder mehreren PL / SQL-Blöcken, um eine bessere Kontrolle über die Ausführung und eine außergewöhnliche Handhabung des Programms zu erhalten.
Hier ist ein einfaches Beispiel für einen verschachtelten Block.
SET SERVEROUTPUT ON SIZE 1000000 DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID% TYPE: = & emp_id1 BEGIN DECLARE n_emp_id employee.employee_id% TYPE: = & emp_id2 v_name employee.first_name% TYPE BEGIN S_ des Mitarbeiters '|| n_emp_id ||' ist '|| v_name) AUSNAHME, WENN no_data_found THEN DBMS_OUTPUT.PUT_LINE (' Mitarbeiter '|| n_emp_id ||' nicht gefunden ') END END /
Der äußere PL / SQL-Block im obigen Beispiel ist als übergeordneter Block oder einschließender Block bekannt, der innere Block ist andererseits als untergeordneter Block oder eingeschlossener Block bekannt.
Es ist keine gute Idee, die Variablen mit denselben Namen in beiden Blöcken zu verwenden, da während der Ausführung die untergeordnete Blockvariable die übergeordnete Blockvariable überschreibt. Dies geschieht, weil PL / SQL der Variablen in ihrem eigenen Block die erste Priorität einräumt.
Blocketikett
Wir können dieses Problem mit der Blockbezeichnung beheben, mit deren Hilfe wir mithilfe einer Bezeichnung auf Variablen innerhalb von Blöcken verweisen können.
Hier ist ein einfaches Beispiel, um zu zeigen, wie wir eine Blockbezeichnung verwenden können.
<>ERKLÄREN ... BEGINNEN ... ENDE
Die Verwendung einer Blockbezeichnung hilft, die Lesbarkeit des Codes zu verbessern, eine bessere Kontrolle zu erlangen und Verweise auf die Blöcke zu erstellen. Nachdem wir nun wissen, wie wir mit verschachtelten Blöcken arbeiten können, versuchen wir zu verstehen, wie die IF-Anweisung in PL / SQL funktioniert.
IF-Anweisung
PL / SQL verfügt über drei IF STATEMENTS
WENN, DANN - Es ist die einfachste WENN STATEMENT, wenn die Bedingung wahr ist, werden die Anweisungen ausgeführt. Wenn die Bedingung falsch ist, tut sie nichts.
WENN-DANN-SONST - Hierbei wird die ELSE-Klausel für eine alternative Folge von Anweisungen hinzugefügt.
IF-THEN-ELSEIF - Es ermöglicht uns, mehrere Testbedingungen in einer Sequenz auszuführen.
IF-THEN-Syntax
IF-Bedingung THEN sequence_of_statements END IF
IF-THEN-ELSE-Syntax
IF-Bedingung THEN sequence_of_if_statements ELSE sequence_of_else_statements END IF
IF-THEN-ELSEIF-Syntax
IF-Bedingung1 THEN-Sequenz_der_Anweisungen1 ELSIF-Bedingung2 DANN Sequenz_der_Anweisungen2 ELSE-Sequenz_der_Anweisungen3 ENDE IF
Nachdem wir mit der IF-Anweisung fertig sind, sehen wir uns die CASE-Anweisung in PL / SQL an.
CASE-Erklärung
Die CASE-Anweisung hilft im Wesentlichen bei der Ausführung einer Folge von Anweisungen basierend auf einem Selektor. Ein Selektor kann in diesem Fall alles sein, es kann eine Variable, eine Funktion oder ein einfacher Ausdruck sein. Hier ist ein einfaches Beispiel, um die Syntax der CASE-Anweisung in PL / SQL zu zeigen.
[<>] FALL [WAHR | Selektor] WHEN expression1 THEN sequence_of_statements1 WHEN expression2 THEN sequence_of_statements2 ... WHEN expressionN THEN sequence_of_statementsN [ELSE sequence_of_statementsN + 1] END CASE [label_name]
In der obigen Syntax steht nach dem Schlüsselwort CASE der Selektor. PL / SQL wertet den Selektor nur einmal aus, um festzustellen, welche Anweisung ausgeführt werden muss.
Dem Selektor folgt das Schlüsselwort WHEN. Wenn der Ausdruck den Selektor erfüllt, wird die entsprechende Anweisung nach dem Schlüsselwort THEN ausgeführt.
Nachdem wir nun wissen, wie wir eine CASE-Anweisung verwenden können, versuchen wir zu verstehen, wie wir die Schleifenanweisungen in PL / SQL verwenden.
Schleifenanweisung
Eine Schleifenanweisung in PL / SQL ist eine iterative Anweisung, mit der Sie eine Folge von Anweisungen mehrmals ausführen können. Hier ist ein einfaches Beispiel, um die Syntax einer Schleifenanweisung in PL / SQL zu zeigen.
LOOP sequence_of_statements END LOOP
Zwischen dem Schlüsselwort LOOP und END LOOP muss mindestens eine ausführbare Anweisung stehen.
Schleife mit EXIT-Anweisung
Mit den Anweisungen EXIT und EXIT when können Sie die Schleife verlassen. Die Anweisung EXIT WHEN beendet die Schleife bedingt, während EXIT die Ausführung bedingungslos beendet.
LOOP ... BEENDEN, WENN Bedingung END LOOP
Loop-Label
Eine Schleifenbezeichnung wird verwendet, um den Namen der Schleifenzählervariablen zu qualifizieren, wenn sie in einer verschachtelten Schleife verwendet wird. Es folgt die Syntax eines Loop-Labels.
<>LOOP sequence_of_statements END LOOP label
Nachdem wir nun wissen, wie wir die Schleifenanweisungen verwenden können, schauen wir uns zum besseren Verständnis die while-Schleifenanweisungen an.
While-Schleifenanweisung
Wir können die WHILE-Schleifenanweisung verwenden, wenn die Anzahl der Ausführungen erst definiert wird, wenn die Ausführung beginnt. Die folgende Syntax wird für eine WHILE-Schleifenanweisung in PL / SQL verwendet.
WHILE Bedingung LOOP sequence_of_statements END LOOP
Die Bedingung in der Syntax ist ein boolescher Wert oder Ausdruck, der entweder TRUE, FALSE oder NULL ergibt. Wenn die Bedingung TRUE ist, werden die Anweisungen ausgeführt. Wenn sie FALSE ist, wird die Ausführung gestoppt und die Steuerung geht zur nächsten ausführbaren Anweisung.
Unterschied zwischen veränderlich und unveränderlich
Nachdem wir nun wissen, wie wir eine WHILE-Schleifenanweisung verwenden können, werfen wir einen Blick auf die FOR-Schleifenanweisung.
Für Schleifenanweisung
Eine FOR-Schleifenanweisung in PL / SQL ermöglicht es uns, eine Folge von Anweisungen für eine bestimmte Anzahl von Malen auszuführen. Es folgt die Syntax zur Verwendung der FOR-Schleifenanweisung in PL / SQL
FOR loop_counter IN [REVERSE] lower_bound .. höher_bound LOOP Sequenz_der_Anweisungen END LOOP
PL / SQL erstellt automatisch eine lokale Variable loop_counter mit einem INTEGER-Datentyp für die Schleife, sodass Sie diese nicht explizit deklarieren müssen. Die untere Grenze ... die höhere Grenze ist der Bereich, über den die Schleife iteriert. Außerdem muss mindestens eine ausführbare Anweisung zwischen den Schlüsselwörtern LOOP und END LOOP vorhanden sein.
Nachdem wir nun wissen, wie wir die Schleifenanweisungen in PL / SQL verwenden können, werfen wir einen Blick auf die außergewöhnliche Behandlung in PL / SQL.
Außergewöhnliches Handling
In PL / SQL wird jede Art von Fehler als Ausnahme behandelt. Eine Ausnahme kann als spezielle Bedingung behandelt werden, die den Ausführungsablauf ändern oder ändern kann. In PL / SQL gibt es zwei Arten von Ausnahmen.
Systemausnahme - Es wird von der PL / SQL-Laufzeit ausgelöst, wenn ein Fehler erkannt wird.
Vom Programmierer definierte Ausnahme - Diese Ausnahmen werden vom Programmierer in einer bestimmten Anwendung definiert.
Eine Ausnahme definieren
Eine Ausnahme in PL / SQL muss deklariert werden, bevor sie ausgelöst werden kann. Wir können die Ausnahme mit dem Schlüsselwort EXCEPTION definieren, wie wir es im folgenden Beispiel getan haben.
EXCEPTION_NAME EXCEPTION
Um eine Ausnahme auszulösen, verwenden wir das Schlüsselwort RAISE.
RAISE EXCEPTION_NAME
Ich hoffe, dieser Artikel hat Ihnen dabei geholfen, Ihr Wissen aufzuwerten. Weitere Informationen zu SQL oder Datenbanken finden Sie in unserer umfassenden Leseliste hier: .
Wenn Sie eine strukturierte Schulung zu MySQL erhalten möchten, lesen Sie unsere Dies beinhaltet ein von Lehrern geführtes Live-Training und praktische Projekterfahrung. Diese Schulung hilft Ihnen dabei, MySQL gründlich zu verstehen und das Thema zu beherrschen.
Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren von ” PL / SQL-Tutorial Und ich werde mich bei Ihnen melden.