PL/SQL - Prozeduren: Ein Anfängerleitfaden

Hallo da draußen, zukünftige PL/SQL-Zauberer! Heute machen wir uns auf eine aufregende Reise in die Welt der PL/SQL-Prozeduren. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Ihr freundlicher Guide sein, und wir gehen das Schritt für Schritt durch. Bis zum Ende dieses Tutorials werden Sie in der Lage sein, Ihre eigenen Prozeduren wie ein Profi zu erstellen!

PL/SQL - Procedures

Was ist eine PL/SQL-Prozedur?

Bevor wir tiefer einsteigen, lassen Sie uns verstehen, was eine Prozedur ist. Stellen Sie sich eine Prozedur wie ein wiederverwendbares Rezept in der Küche vor. Ebenso wie Sie vielleicht ein Rezept für Ihre Lieblings-Schokokekse haben, das Sie immer wieder verwenden, ist eine Prozedur ein Satz von SQL- und PL/SQL-Anweisungen, die Sie jederzeit aufrufen können, um eine bestimmte Aufgabe auszuführen.

Teile eines PL/SQL-Subprogramms

Nun, lassen Sie uns die Anatomie eines PL/SQL-Subprogramms (das auch Prozeduren umfasst) analysieren. Das ist wie das Verständnis der verschiedenen Teile eines Sandwiches – jedes Komponente hat seine Rolle!

  1. Deklarationsabschnitt: Hier stellen wir unsere Zutaten (Variablen, Konstanten, etc.) vor.
  2. Ausführungsabschnitt: Hier geschieht das magische – unser eigentlicher Code kommt hier rein.
  3. Ausnahmegewaltabschnitt: Das ist unser Sicherheitsnetz, das mögliche Fehler auffängt.

Hier ist eine einfache visuelle Darstellung:

DECLARE
-- Deklarationsabschnitt
BEGIN
-- Ausführungsabschnitt
EXCEPTION
-- Ausnahmegewaltabschnitt
END;

Erstellen einer Prozedur

Lassen Sie uns die Ärmel hochwerren und unsere erste Prozedur erstellen! Wir beginnen mit etwas Einfachem – einer Prozedur, die "Hallo, Welt!" sagt.

CREATE OR REPLACE PROCEDURE say_hello IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hallo, Welt!');
END;
/

Lassen Sie uns das auseinandernehmen:

  • CREATE OR REPLACE PROCEDURE: Dasweil sagt Oracle, eine neue Prozedur zu erstellen oder eine vorhandene mit demselben Namen zu ersetzen.
  • say_hello: Das ist der Name, den wir unserer Prozedur geben.
  • IS: Dieses Schlüsselwort trennt die Prozedurkopfzeile von ihrem Körper.
  • BEGIN und END: Diese Schlüsselwörter umschließen den ausführbaren Abschnitt.
  • DBMS_OUTPUT.PUT_LINE: Das ist eine integrierte Prozedur, die Text ausgibt.
  • /: Dieser Schrägstrich führt den gesamten CREATE PROCEDURE-Befehl aus.

Ausführen einer eigenständigen Prozedur

Großartig! Wir haben unsere Prozedur erstellt, aber wie führen wir sie aus? Es ist so einfach wie ein Kuchen:

BEGIN
say_hello;
END;
/

Wenn Sie dies ausführen, sollten Sie "Hallo, Welt!" ausgegeben sehen. Gratulation! Sie haben gerade Ihre erste PL/SQL-Prozedur erstellt und ausgeführt!

Löschen einer eigenständigen Prozedur

Manchmal müssen wir aufzuräumen. Wenn Sie eine Prozedur entfernen möchten, ist es einfach:

DROP PROCEDURE say_hello;

Dieser Befehl wird unsere say_hello-Prozedur löschen. Seien Sie vorsichtig mit dieser Macht – mit großer Macht kommt große Verantwortung!

Parametermodi in PL/SQL-Subprogrammen

Nun machen wir unsere Prozeduren flexibler, indem wir Parameter hinzufügen. In PL/SQL können Parameter verschiedene Modi haben:

Modus Beschreibung
IN Werte in die Prozedur übergeben
OUT Werte aus der Prozedur zurückgeben
IN OUT Werte sowohl hinein als auch heraus übergeben

Lassen Sie uns eine Prozedur mit einem IN-Parameter erstellen:

CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hallo, ' || p_name || '!');
END;
/

Jetzt können wir verschiedene Benutzer begrüßen:

BEGIN
greet_user('Alice');
greet_user('Bob');
END;
/

Dies wird ausgeben:

Hallo, Alice!
Hallo, Bob!

Methoden zum Übergeben von Parametern

Wenn Sie Prozeduren mit Parametern aufrufen, haben wir zwei Hauptmethoden:

  1. Positionelle Notation: Wir übergeben Parameter in der Reihenfolge, in der sie definiert sind.
  2. Namentliche Notation: Wir geben an, welchem Parameter jeder Wert entspricht.

Lassen Sie uns beide in Aktion sehen:

CREATE OR REPLACE PROCEDURE calculate_rectangle(
p_length IN NUMBER,
p_width IN NUMBER,
p_area OUT NUMBER,
p_perimeter OUT NUMBER
) IS
BEGIN
p_area := p_length * p_width;
p_perimeter := 2 * (p_length + p_width);
END;
/

Jetzt rufen wir diese Prozedur mit beiden Notationen auf:

DECLARE
v_area NUMBER;
v_perimeter NUMBER;
BEGIN
-- Positionelle Notation
calculate_rectangle(5, 3, v_area, v_perimeter);
DBMS_OUTPUT.PUT_LINE('Positionelle: Fläche = ' || v_area || ', Umfang = ' || v_perimeter);

-- Namentliche Notation
calculate_rectangle(p_width => 3, p_length => 5, p_perimeter => v_perimeter, p_area => v_area);
DBMS_OUTPUT.PUT_LINE('Namentliche: Fläche = ' || v_area || ', Umfang = ' || v_perimeter);
END;
/

Beide Aufrufe werden das gleiche Ergebnis liefern:

Positionelle: Fläche = 15, Umfang = 16
Namentliche: Fläche = 15, Umfang = 16

Die namentliche Notation ist besonders nützlich, wenn Sie viele Parameter haben oder optionale überspringen möchten.

Und da haben Sie es, Leute! Wir haben die Grundlagen der PL/SQL-Prozeduren behandelt, von der Erstellung bis zur Ausführung und haben sogar Parameter und deren Übertragung berührt. Denken Sie daran, Übung macht den Meister, also fürchten Sie sich nicht, Ihre eigenen Prozeduren auszuprobieren.

Bevor wir schließen, hier ist ein kleiner Witz: Warum hat der Datenbankadministrator seine Frau verlassen? Sie hatte zu viele Ansichten und war nicht normalisiert!

Frohes Coden und möge Ihre Prozeduren stets erfolgreich ausgeführt werden!

Credits: Image by storyset