CodeGym /Kurse /SQL SELF /Einführung in PL/pgSQL

Einführung in PL/pgSQL

SQL SELF
Level 49 , Lektion 0
Verfügbar

PostgreSQL kann nicht nur "SQL sprechen"! Schau mal: PL/pgSQL (Procedural Language/PostgreSQL Structured Query Language) ist eine prozedurale Programmiersprache, die direkt in PostgreSQL eingebaut ist. Sie wurde entwickelt, um komplexe Operationen mit SQL-Queries und Kontrollstrukturen wie Bedingungen (IF, CASE) und Schleifen (LOOP, FOR, WHILE) einfacher zu machen.

PL/pgSQL und SQL – das ist wie eine automatisierte Fertigungsstraße und ein ganz normales "Handwerkzeug" wie ein Hammer. Genau wie ein Hammer ist SQL ein zuverlässiges Tool. Aber für jeden Schlag musst du selbst ausholen und ihn manuell ausführen. PL/pgSQL dagegen ist wie eine automatische Fertigungsstraße: Du sagst einmal, was und wie gemacht werden soll, und dann läuft alles von selbst – Befehle werden ausgeführt, Dinge werden gemerkt, geprüft, falls was schiefgeht, und es geht entspannt weiter. Warum jeden Nagel selbst einschlagen, wenn du einfach zuschauen kannst, wie alles automatisch läuft? Ist das nicht ein Traum?

Vergleich von PL/pgSQL mit normalen SQL-Queries

Lass uns mal anschauen, wie sich PL/pgSQL von einfachen SQL-Queries unterscheidet.

SQL funktioniert super, wenn du eine ganz bestimmte Aufgabe erledigen willst: Zum Beispiel alle Studenten aus einer Tabelle auswählen oder eine neue Zeile hinzufügen. Aber sobald du mit Logik wie "wenn dies, dann das" oder mit wiederholenden Aktionen zu tun hast, kommt SQL an seine Grenzen.

Stell dir zum Beispiel vor, du musst:

  1. Prüfen, ob es schon einen Eintrag über einen Studenten in der Tabelle gibt.
  2. Wenn der Eintrag existiert – die Daten aktualisieren.
  3. Wenn es keinen Eintrag gibt – einen neuen Eintrag hinzufügen.

Mit normalem SQL müsstest du dafür mehrere Queries schreiben und das Ergebnis auf der Client-Seite verarbeiten. Mit PL/pgSQL kannst du das alles in eine Prozedur packen, die direkt auf der Datenbank läuft.

PL/pgSQL zeigt seine Stärken besonders in komplexeren Projekten. Damit kannst du:

  • Zwischenergebnisse in Variablen speichern;
  • Fehler abfangen, damit die Datenbank bei Überraschungen nicht "abstürzt";
  • Schleifen und Bedingungen nutzen, um komplexe Algorithmen umzusetzen.

Einsatzgebiete von PL/pgSQL

PL/pgSQL wird ziemlich oft in folgenden Szenarien eingesetzt:

  1. Automatisierung von Aufgaben. Zum Beispiel das automatische Anlegen von Einträgen im Log (log), wenn Daten aktualisiert werden.

  2. Business-Logik. Du hast eine Regel: Jeder Student, der mehr als 5 Fehlzeiten hat, soll automatisch als "inaktiv" markiert werden. Warum diese Regel nicht einfach in eine PL/pgSQL-Funktion packen?

  3. Analytics und Berichte. Anstatt Daten zwischen Datenbank und Client-App hin und her zu schieben, kannst du sie direkt auf dem Server aggregieren.

  4. Trigger. PL/pgSQL wird genutzt, um Trigger zu schreiben, die automatisch Aktionen bei Insert, Update oder Delete ausführen.

Beispiel für die Nutzung von PL/pgSQL

Hier ist ein Beispiel für eine Funktion, die zwei Zahlen nimmt, sie addiert und das Ergebnis zurückgibt:

CREATE FUNCTION add_numbers(a INT, b INT) RETURNS INT AS $$
BEGIN
    RETURN a + b;
END;
$$ LANGUAGE plpgsql;

Erklärung:

  • CREATE FUNCTION add_numbers(a INT, b INT) – wir erstellen eine Funktion mit dem Namen add_numbers, die zwei Argumente vom Typ INT (Ganzzahl) nimmt.
  • RETURNS INT – gibt an, dass die Funktion eine Ganzzahl zurückgibt.
  • BEGIN ... END – das ist der Hauptblock, in dem die Logik der Funktion steht.
  • RETURN a + b; – das Ergebnis der Addition wird zurückgegeben.

Um diese Funktion aufzurufen, benutzt du einen ganz normalen SQL-Query:

SELECT add_numbers(10, 20);

Ergebnis: 30.

Fallstricke und Einschränkungen

PL/pgSQL ist ein mächtiges Tool, aber du solltest vorsichtig damit umgehen:

  • Performance: Zu komplexe Funktionen können die Datenbank ausbremsen. Teste und optimiere immer!
  • Testing: Fehler in Funktionen bleiben oft unbemerkt, bis du sie aufrufst. Vergiss die Tests nicht!
  • Lesbarkeit: Große Funktionen und Prozeduren mit komplizierter Logik können schwer verständlich sein. Schreib deinen Code so, dass du ihn auch in einem Monat noch verstehst.

Jetzt, wo du schon ein bisschen weißt, was PL/pgSQL ist, reden wir weiter über Syntax und die wichtigsten Features. Wir lernen, wie man Code-Blöcke erstellt, Variablen deklariert und mit Datentypen arbeitet – alles in den nächsten Vorlesungen. Los geht’s mit dem Programmieren auf der Datenbank-Seite!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION