Database
 sql >> Datenbank >  >> RDS >> Database

PL/SQL-Tutorial:Alles, was Sie über PL/SQL wissen müssen

PL/SQL ist eine prozedurale Sprache, die die Mängel der strukturierten Abfragesprache überwindet. Es ist eine Erweiterung von SQL und wir können sogar SQL-Abfragen problemlos in jeder PL/SQL-Anwendung oder jedem Programm verwenden. In diesem PL/SQL-Tutorial werden wir die grundlegenden Konzepte von PL/SQL im Detail durchgehen. Die folgenden Themen werden in diesem Artikel behandelt.

  • Was ist PL/SQL?
    • Funktionen
    • PL/SQL vs. SQL
  • Blockstrukturen in PL/SQL
  • PL/SQL-Variablen
  • Funktion in PL/SQL
  • PL/SQL-Prozedur
  • Verschachtelter Block
  • IF-Anweisung
  • CASE-Anweisung
  • Loop-Anweisung
    • While-Schleifenanweisung
    • For-Schleifen-Anweisung
  • Außergewöhnliche Handhabung

Was ist PL/SQL?

Es steht für prozedurale Spracherweiterung der strukturierten Abfragesprache. Oracle hat PL/SQL entwickelt, das einige Beschränkungen von SQL erweitert, um eine umfassendere Lösung zum Erstellen unternehmenskritischer Anwendungen bereitzustellen, die auf der Oracle-Datenbank ausgeführt werden.

Funktionen

  • 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 werden.

  • PL/SQL hat auch einen Ausnahmebehandlungsblock, der die Ausnahmen in PL/SQL behandelt.

  • Umfangreiche Fehlerprüfung ist auch mit PL/SQL möglich

  • Die in PL/SQL geschriebenen Anwendungen sind auf andere Hardware und Betriebssysteme portierbar, vorausgesetzt, Oracle muss betriebsbereit sein.

PL/SQL vs. SQL

SQL PL/SQL
SQL ist eine einzelne Abfrage, die zum Ausführen von DDL- und DML-Operationen verwendet wird PL/SQL ist ein Codeblock, der verwendet wird, um ein ganzes Programm oder eine Prozedur/Funktion usw. zu definieren
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 Block von Anweisungen auf einmal aus.
SQL wird hauptsächlich verwendet, um die Daten zu manipulieren PL/SQL hingegen wird 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

Blockstrukturen in PL/SQL

PL/SQL organisiert den Code normalerweise in Blöcken. Der Codeblock ohne Namen wird als anonymer Block bezeichnet. Er wird als anonymer Block bezeichnet, da er nicht in der Oracle-Datenbank gespeichert wird. Werfen wir einen Blick auf einen anonymen Block in PL/SQL.

[DECLARE] Deklarationsanweisungen;[BEGIN] Ausführungsanweisungen; [AUSNAHME] 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, Beginn, Ausnahme und Ende. Versuchen wir zu verstehen, wie die Blockstruktur in PL/SQL funktioniert. Von all diesen Abschnitten ist der Ausführungsabschnitt obligatorisch und der Rest optional.

  • ERKLÄREN Das Schlüsselwort wird für den Deklarationsabschnitt verwendet, um Datentypen und Strukturen wie Variablen, Funktionen usw. zu deklarieren.

  • BEGINN 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, wir können in diesem Block sowohl prozedurale als auch SQL-Anweisungen verwenden.

  • Die AUSNAHME Schlüsselwort wird für den Ausnahmeabschnitt verwendet. Es enthält alle Ausnahmeanweisungen.

  • ENDE Das Schlüsselwort markiert das Ende des Blocks und der umgekehrte Schrägstrich „/“ teilt dem Tool mit, das 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;/

Da wir nun wissen, wie die Blockstruktur in PL/SQL funktioniert, lassen Sie uns die verschiedenen Aspekte von PL/SQL wie das Deklarieren, Benennen und Zuweisen von Werten zu den Variablen verstehen.

P>

PL/SQL-Variablen

Die Variable in PL/SQL ist im Grunde ein unterschiedlicher 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.

Variablennamensregeln

PL/SQL folgt den folgenden Regeln für die Benennung von Variablen.

  • Die Variable darf nicht länger als 31 Zeichen sein

  • Der Name der Variablen sollte mit einem ASCII-Zeichen beginnen. Da in PL/SQL die Groß- und Kleinschreibung beachtet wird, sind ein Großbuchstabe und ein Kleinbuchstabe unterschiedliche Variablen.

  • Nach dem ersten Zeichen muss ein Sonderzeichen ($,_ ) oder eine beliebige Zahl stehen.

Namenskonventionen

Verwenden Sie die folgenden Namenskonventionen, die unten aufgeführt sind, um die Variablen zu verwenden.

Präfix Datentyp
v_ VARCHAR2
n_ ANZAHL
t_ TABELLE
r_ REIHE
d_ DATUM
b_ BOOLEAN

Erklärung

Versuchen wir zu verstehen, wie die Variablendeklaration in PL/SQL durchgeführt wird

Die Deklaration enthält den Variablennamen gefolgt vom Datentyp und getrennt durch ein Semikolon. 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 wir es im obigen Beispiel getan haben.

Anker

Der Anker bezieht sich im Wesentlichen auf die Verwendung des Schlüsselworts %TYPE, um eine Variable mit dem Datentyp zu deklarieren, 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, dann können wir die Anker folgendermaßen verwenden.

DECLARE v_name MITARBEITER.NAME%TYPE; n_age EMPLOYEE.AGE%TYPE;BEGIN NULL;END;/

Zuweisung

Variablenzuweisung ist ziemlich einfach, wir können den Zuweisungsoperator verwenden, um einer Variablen Werte zuzuweisen. Das folgende Beispiel zeigt, wie wir einer Variablen Werte zuweisen können.

DECLARE v_name VARCHAR(20); n_Kurs VARCHAR(10); BEGIN v_name ="edureka"; v_course ="sql";END;/

Initialisierung

Wir können auch einen Wert für die Variable im Deklarationsabschnitt initialisieren. Das folgende Beispiel zeigt, wie wir Werte für eine Variable initialisieren können.

DECLAREv_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 werden.

Funktion in PL/SQL

Eine Funktion in PL/SQL ist im Grunde ein benannter Block, der einen Wert zurückgibt. Es wird auch als Subroutine oder Unterprogramm bezeichnet, die folgende Syntax zeigt, wie wir Funktionen in PL/SQL verwenden können.

CREATE [OR REPLACE] FUNCTION function_name [( parameter_1 [IN] [OUT] data_type, parameter_2 [IN] [OUT] data_type, parameter_N [IN] [OUT] data_type] 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 hat.

  • IN – Der IN-Parameter ist ein schreibgeschützter Parameter.

  • 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 ISBEGIN RETURN to_number(iv_number); AUSNAHME, WENN andere DANN NULL;END;
ZURÜCKGEBEN

Eine Funktion aufrufen

Lassen Sie uns versuchen, die Funktion, die wir in einem anonymen Block erstellt haben, im folgenden Beispiel aufzurufen.

SET SERVEROUTPUT ON SIZE 1000000;DECLARE n_x number; n_y Zahl; n_z Zahl; BEGIN n_x :=try_parse('256'); n_y :=try_parse('29.72'); n_z :=try_parse('pqrs'); DBMS_OUTPUT.PUT_LINE(n_x); DBMS_OUTPUT.PUT_LINE(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 erledigt. Mithilfe einer Prozedur können wir komplexe Geschäftslogik verpacken oder kapseln und sie sowohl in der Anwendungs- als auch in der Datenbankschicht wiederverwenden.

Lassen Sie uns einen Blick auf ein einfaches Beispiel werfen, um zu verstehen, wie die Prozedur in PL/SQL funktioniert

CREATE OR REPLACE PROCEDURE adjust_salary( in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE, in_percent IN NUMBER) ISBEGIN -- Aktualisieren Sie das Gehalt des Mitarbeiters 

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.

Prozedurkopf

Der Abschnitt vor dem Schlüsselwort IS wird als Prozedurkopf bezeichnet. Im Folgenden finden Sie einige Hinweise, 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 – Es ist die optionale Parameterliste.

  • AUTHID – Es bestimmt, ob die Prozedur mit den Rechten des aktuellen Benutzers oder des ursprünglichen Eigentümers der Prozedur ausgeführt wird.

Verfahrenskörper

Alles, was nach dem Schlüsselwort IS kommt, wird Prozedurkörper genannt. Wir haben die Deklarations-, Ausnahme- und Ausführungsanweisungen im Prozedurrumpf. Im Gegensatz zur Funktion wird das Schlüsselwort RETURN in einer Prozedur verwendet, um die Ausführung anzuhalten und die Steuerung 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…paramN);

Wir können die Prozeduren ohne Parameter aufrufen, indem wir einfach das Schlüsselwort EXEC 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 Behandlung 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 mitarbeiter.vorname%TYP; BEGIN SELECT first_name INTO v_name FROM mitarbeiter WHERE mitarbeiter_id =n_emp_id; DBMS_OUTPUT.PUT_LINE('Vorname des Mitarbeiters ' || n_emp_id || ' ist ' || v_name); AUSNAHME WENN no_data_found THEN DBMS_OUTPUT.PUT_LINE('Mitarbeiter' || n_emp_id || 'nicht gefunden'); ENDE;ENDE;/

Der äußere PL/SQL-Block im obigen Beispiel wird als übergeordneter Block oder umschließender Block bezeichnet, der innere Block hingegen als untergeordneter Block oder als der geschlossener Block.

Es ist keine gute Idee, 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 Variable innerhalb seines eigenen Blocks die erste Priorität einräumt.

Blocklabel

Wir können dieses Problem mit dem Block-Label lösen, das uns hilft, mithilfe eines Labels auf Variablen innerhalb von Blöcken zu verweisen.

Hier ist ein einfaches Beispiel, um zu zeigen, wie wir ein Block-Label verwenden können.

<>DECLARE...BEGIN...END;

Die Verwendung einer Blockbezeichnung hilft, die Lesbarkeit des Codes zu verbessern, eine bessere Kontrolle zu erlangen und Verweise auf die Blöcke herzustellen. 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 hat drei IF-Anweisungen

  • IF-THEN – Es ist die einfachste IF-Anweisung, wenn die Bedingung wahr ist, werden die Anweisungen ausgeführt, wenn die Bedingung falsch ist, tut sie nichts.

  • IF-THEN-ELSE – Darin wird die ELSE-Klausel für eine alternative Anweisungsfolge hinzugefügt.

  • IF-THEN-ELSEIF – Es erlaubt uns, mehrere Testbedingungen hintereinander auszuführen.

IF-THEN-Syntax

IF Bedingung THEN Folge_von_Anweisungen;END IF;

IF-THEN-ELSE-Syntax

IF-Bedingung THEN Sequenz_von_if_Anweisungen;ELSE Sequenz_von_sonst_Anweisungen;END IF;

IF-THEN-ELSEIF-Syntax

IF Bedingung1 THEN Folge_von_Anweisungen1ELSIF Bedingung2 THEN Folge_von_Anweisungen2ELSE Folge_von_Anweisungen3END IF;

Nachdem wir nun mit der IF-Anweisung fertig sind, wollen wir uns die CASE-Anweisung in PL/SQL ansehen.

CASE-Anweisung

Die CASE-Anweisung hilft grundsätzlich 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.

[<>]CASE [TRUE | Selektor] WHEN Ausdruck1 DANN Folge_von_Anweisungen1; WHEN Ausdruck2 DANN Folge_von_Anweisungen2; ... WHEN AusdruckN THEN Folge_von_AnweisungenN; [ELSE sequence_of_statementsN+1;]END CASE [label_name];

In der obigen Syntax kommt nach dem Schlüsselwort CASE der Selektor. PL/SQL wertet den Selektor nur einmal aus, um festzustellen, welche Anweisung ausgeführt werden muss.

Gefolgt vom Selektor ist das Schlüsselwort WHEN. Wenn der Ausdruck den Selektor erfüllt, wird die entsprechende Anweisung nach dem Schlüsselwort THEN ausgeführt.

Da wir nun wissen, wie wir eine CASE-Anweisung verwenden können, versuchen wir zu verstehen, wie wir die Schleifenanweisungen in PL/SQL verwenden werden.

Loop-Anweisung

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 den Schlüsselwörtern LOOP und END LOOP muss sich mindestens eine ausführbare Anweisung befinden.

Schleife mit EXIT-Anweisung

Die Anweisungen EXIT und EXIT when ermöglichen es Ihnen, die Schleife zu verlassen. Die EXIT WHEN-Anweisung beendet die Schleife bedingt, während EXIT die Ausführung unbedingt beendet.

LOOP ... EXIT WHEN Bedingung;END LOOP;

Loop-Label

Eine Schleifenbezeichnung wird verwendet, um den Namen der Schleifenzählervariable zu qualifizieren, wenn sie in einer verschachtelten Schleife verwendet wird. Es folgt die Syntax eines Loop-Labels.

<

Nachdem wir nun wissen, wie wir die Schleifenanweisungen verwenden können, wollen wir uns zum besseren Verständnis die While-Schleifenanweisungen ansehen.

While-Schleife-Anweisung

Wir können die WHILE-Schleife-Anweisung verwenden, wenn die Anzahl der Ausführungen nicht definiert ist, bis die Ausführung beginnt. Die folgende Syntax wird für eine WHILE-Schleifenanweisung in PL/SQL verwendet.

WHILE conditionLOOP sequence_of_statements;END LOOP;

Die Bedingung in der Syntax ist ein boolescher Wert oder Ausdruck, der als TRUE, FALSE oder NULL ausgewertet wird. Wenn die Bedingung TRUE ist, werden die Anweisungen ausgeführt, wenn sie FALSE ist, wird die Ausführung angehalten und die Steuerung geht zur nächsten ausführbaren Anweisung.

Nun, da wir wissen, wie wir eine WHILE-Schleife verwenden können, werfen wir einen Blick auf die FOR-Schleife.

For-Schleife-Anweisung

Eine FOR-Schleife-Anweisung in PL/SQL ermöglicht es uns, eine Folge von Anweisungen 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 .. Higher_boundLOOP sequence_of_statements;END LOOP;

PL/SQL erstellt automatisch eine lokale Variable loop_counter mit einem INTEGER-Datentyp für die Schleife, sodass Sie sie nicht explizit deklarieren müssen. Die Untergrenze..Obergrenze ist der Bereich, über den die Schleife iteriert. Außerdem müssen Sie mindestens eine ausführbare Anweisung zwischen den Schlüsselwörtern LOOP und END LOOP haben.

Da wir nun wissen, wie wir die Schleifenanweisungen in PL/SQL verwenden können, werfen wir einen Blick auf die außergewöhnliche Handhabung in PL/SQL.

Außergewöhnliche Handhabung

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 verändern kann. In PL/SQL gibt es zwei Arten von Ausnahmen.

  • Systemausnahme – Es wird von der PL/SQL-Laufzeit ausgelöst, wenn es einen Fehler erkennt.

  • 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 Beispiel unten getan haben.

EXCEPTION_NAME AUSNAHME;

Um eine Ausnahme auszulösen, verwenden wir das Schlüsselwort RAISE.

EXCEPTION_NAME ERHEBEN;

Das war also alles über PL/SQL, ich hoffe, dieser Artikel hat Ihnen geholfen, Ihr Wissen aufzuwerten. Weitere Informationen zu SQL oder Datenbanken finden Sie in unserer umfassenden Leseliste hier:Datenbanken Edureka .

Wenn Sie eine strukturierte Schulung zu MySQL erhalten möchten, sehen Sie sich unsere MySQL-DBA-Zertifizierungsschulung an Dazu gehören von einem Kursleiter geleitete Live-Schulungen und reale Projekterfahrung. Dieses Training wird Ihnen dabei helfen, MySQL gründlich zu verstehen und das Thema zu beherrschen.

Haben Sie eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich von „PL/SQL Tutorial ” und ich melde mich bei Ihnen.