Eine Stored Procedure (deutsch: gespeicherte Prozedur) ist ein SQL-Programm, das direkt im Datenbankserver abgelegt und mehrfach aufgerufen werden kann. Sie bündelt mehrere Anweisungen, Kontrollstrukturen und Parameter in einer wiederverwendbaren Einheit.

Vorteile

  • Wiederverwendbarkeit: Logik wird einmal geschrieben und von vielen Anwendungen genutzt.
  • Weniger Netzwerkverkehr: Statt vieler Einzelanfragen überträgt der Client nur den Prozeduraufruf; die Verarbeitung läuft auf dem Server.
  • Sicherheit: Anwender bekommen Rechte auf die Prozedur, nicht auf die Tabellen – die Daten bleiben gekapselt.
  • Konsistenz: Geschäftsregeln zentral gepflegt statt in jeder Anwendung dupliziert.

Beispiel in MySQL

DELIMITER //
CREATE PROCEDURE kunden_anzahl(IN stadt VARCHAR(100), OUT anz INT)
BEGIN
    SELECT COUNT(*) INTO anz FROM kunden WHERE ort = stadt;
END //
DELIMITER ;

CALL kunden_anzahl('Lübeck', @ergebnis);
SELECT @ergebnis;

Prozeduren, Funktionen und Transaktionen

Prozeduren können eigene Transaktionen steuern (COMMIT/ROLLBACK) und beliebige Anweisungen ausführen. Funktionen dagegen liefern genau einen Rückgabewert und werden innerhalb von SQL-Ausdrücken verwendet. Im Gegensatz zu Triggern, die automatisch bei Datenänderungen feuern, wird eine Prozedur nur explizit mit CALL gestartet. Zu viel Geschäftslogik in Prozeduren kann die Wartung erschweren – ein ausgewogenes Verhältnis zu Anwendungscode ist empfehlenswert.

Verwandte Grundlagen: SQL-Grundlagen, ACID-Transaktionssicherheit.