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.