PL/SQL - Funktionen: Ein Anfängerleitfaden

Hallo da draußen, angehende Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt der PL/SQL-Funktionen. Keine Sorge, wenn du noch nie eine Zeile Code geschrieben hast – ich werde dein freundlicher Guide sein, und wir werden dies Schritt für Schritt angehen. Am Ende dieses Tutorials wirst du Funktionen erstellen und aufrufen können, wie ein Profi!

PL/SQL - Functions

Was ist eine PL/SQL-Funktion?

Bevor wir tiefer einsteigen, lassen wir uns darüber klar werden, was eine Funktion ist. Stell dir eine Funktion als kleinen Helfer in deinem Code vor. Es ist wie ein Mini-Programm in deinem Hauptprogramm, das eine bestimmte Aufgabe ausführt. Du gibst ihm einige Informationen (wir nennen diese Eingaben oder Parameter), es erledigt einige Arbeiten und gibt dir dann ein Ergebnis zurück.

Zum Beispiel, stelle dir vor, du hast einen Roboter-Assistenten (nennen wir ihn FunctionBot), der die Fläche eines Kreises berechnen kann. Du sagst FunctionBot den Radius des Kreises, und er führt schnell die Berechnung durch und gibt dir die Fläche zurück. Das ist im Wesentlichen, was eine Funktion in der Programmierung macht!

Erstellen einer Funktion

Nun lernen wir, wie man seine eigene Funktion in PL/SQL erstellt. Die grundlegende Struktur sieht如此 aus:

CREATE [OR REPLACE] FUNCTION funktion_name
[(parameter_name [IN | OUT | IN OUT] typ [, ...])]
RETURN Rueckgabedatentyp
IS
-- Deklarationsabschnitt
BEGIN
-- Ausführbarer Abschnitt
RETURN (wert);
END;
/

Lass dich davon nicht abschrecken! Lassen wir es auseinandernehmen:

  1. CREATE [OR REPLACE] FUNCTION: Das tells Oracle, dass wir eine neue Funktion erstellen möchten (oder eine bestehende ersetzen).
  2. funktion_name: Dies ist der Name, den wir unserer Funktion geben.
  3. (parameter_name [IN | OUT | IN OUT] typ [, ...]): Dies sind die Eingaben, die unsere Funktion akzeptiert.
  4. RETURN Rueckgabedatentyp: Dies gibt an, welche Art von Daten unsere Funktion zurückgeben wird.
  5. IS: Dieses Schlüsselwort trennt die Funktionsoberfläche vom Körper.
  6. Die BEGIN und END Schlüsselwörter umschließen den Hauptcode unserer Funktion.
  7. RETURN (wert): Dies ist, wo wir angeben, was unsere Funktion zurückgeben sollte.

Lassen wir eine einfache Funktion erstellen, die die Fläche eines Kreises berechnet:

CREATE OR REPLACE FUNCTION berechne_kreisflaeche(radius NUMBER)
RETURN NUMBER
IS
pi CONSTANT NUMBER := 3.14159265359;
flaeche NUMBER;
BEGIN
flaeche := pi * radius * radius;
RETURN flaeche;
END;
/

Hier ist, was in dieser Funktion passiert:

  1. Wir erstellen eine Funktion namens berechne_kreisflaeche.
  2. Sie akzeptiert einen Eingabeparameter: radius, der ein NUMBER ist.
  3. Sie wird ein NUMBER zurückgeben (die Fläche des Kreises).
  4. Wir definieren eine Konstante pi mit ihrem Wert.
  5. Wir berechnen die Fläche mit der Formel: π * r^2.
  6. Schließlich geben wir die berechnete Fläche zurück.

Aufruf einer Funktion

Nun, da wir unsere Funktion erstellt haben, wie verwenden wir sie? Das wird als "Aufruf" der Funktion bezeichnet. In PL/SQL kannst du eine Funktion auf verschiedene Weise aufrufen:

1. In einer SELECT-Anweisung:

SELECT berechne_kreisflaeche(5) AS kreisflaeche FROM DUAL;

Das wird die Fläche eines Kreises mit Radius 5 zurückgeben.

2. In einem PL/SQL-Block:

DECLARE
ergebnis NUMBER;
BEGIN
ergebnis := berechne_kreisflaeche(7);
DBMS_OUTPUT.PUT_LINE('Die Fläche des Kreises ist: ' || ergebnis);
END;
/

Das wird die Fläche eines Kreises mit Radius 7 berechnen und das Ergebnis ausgeben.

3. Als Teil eines größeren Ausdrucks:

DECLARE
radius NUMBER := 10;
durchmesser NUMBER;
BEGIN
durchmesser := 2 * radius;
DBMS_OUTPUT.PUT_LINE('Die Fläche eines Kreises mit Durchmesser ' ||
durchmesser || ' ist: ' ||
berechne_kreisflaeche(radius));
END;
/

Dies berechnet den Durchmesser und verwendet unsere Funktion, um die Fläche zu finden.

PL/SQL-Rekursive Funktionen

Nun, lassen wir uns über etwas Fortgeschritteneres sprechen: rekursive Funktionen. Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft. Es ist wie eine russische Puppe – öffne eine, und darin ist eine andere!

Hier ist ein klassisches Beispiel: die Berechnung der Fakultät einer Zahl. Die Fakultät von 5 (geschrieben als 5!) ist 5 4 3 2 1 = 120.

Lassen wir eine rekursive Funktion zur Berechnung von Fakultäten schreiben:

CREATE OR REPLACE FUNCTION fakultaet(n NUMBER)
RETURN NUMBER
IS
BEGIN
IF n = 0 OR n = 1 THEN
RETURN 1;
ELSE
RETURN n * fakultaet(n - 1);
END IF;
END;
/

Lassen wir das auseinandernehmen:

  1. Wenn n 0 oder 1 ist, geben wir 1 zurück (dies ist unser#End Basisfall).
  2. Andernfalls multiplizieren wir n mit der Fakultät von (n-1).
  3. Diese Funktion ruft sich selbst mit einer kleineren Zahl auf, bis sie den Basisfall erreicht.

Um diese Funktion zu verwenden:

BEGIN
DBMS_OUTPUT.PUT_LINE('Fakultät von 5 ist: ' || fakultaet(5));
END;
/

Dies gibt aus: "Fakultät von 5 ist: 120"

Häufige PL/SQL-Funktionsmethoden

Hier ist eine Tabelle einige häufig verwendeter Methoden für PL/SQL-Funktionen:

Methode Beschreibung Beispiel
CREATE FUNCTION Erstellt eine neue Funktion CREATE FUNCTION meine_funktion...
REPLACE FUNCTION Ersetzt eine bestehende Funktion CREATE OR REPLACE FUNCTION meine_funktion...
RETURN Gibt den Rückgabewert und -typ an RETURN NUMBER; ... RETURN ergebnis;
CALL Ruft eine Funktion auf SELECT meine_funktion(5) FROM DUAL;
DROP FUNCTION Entfernt eine Funktion DROP FUNCTION meine_funktion;
EXECUTE Führt eine Funktion aus EXECUTE meine_funktion(10);

Erinnere dich daran, Übung macht den Meister! Habe keine Angst, mit diesen Funktionen zu experimentieren. Versuche, die Eingaben zu ändern, Funktionen zu kombinieren oder deine eigenen einzigartigen Funktionen zu erstellen. Je mehr du mit ihnen spielst, desto besser verstehst du, wie sie funktionieren.

Und das war's! Du hast gerade deine ersten Schritte in die Welt der PL/SQL-Funktionen unternommen. Von einfachen Berechnungen bis hin zu rekursiven Problemlösungen sind Funktionen mächtige Werkzeuge, die deinen Code effizienter und einfacher zu verwalten machen. Weitersuchen, weitercodieren und vor allem: Spaß haben!

Credits: Image by storyset