Eine gespeicherte Prozedur () ist eine Anweisung in Datenbankmanagementsystemen, mit der ganze Abläufe von Anweisungen vom Datenbank-Client aufgerufen werden können. Sie ist somit ein eigenständiger Befehl, der eine Abfolge gespeicherter Befehle ausführt. Gespeicherte Prozeduren werden im Data-Dictionary der jeweiligen Datenbank gespeichert.
Mittels gespeicherter Prozeduren können häufiger verwendete Abläufe, die sonst durch viele einzelne Befehle vom Client ausgeführt werden würden, auf das Datenbanksystem ausgelagert und durch einen einzigen Aufruf (CALL oder EXECUTE) ausgeführt werden (siehe auch Client-Server-System). Mitunter wird dadurch die Leistung gesteigert, da weniger Daten zwischen Client und Datenbanksystem ausgetauscht werden müssen und das Datenbankmanagementsystem häufig auf leistungsfähigeren Servern läuft.
Neben der gewöhnlichen Syntax der Abfragesprache, meist SQL, können in gespeicherten Prozeduren auch zusätzliche Befehle zur Ablaufsteuerung oder Auswertung von Bedingungen hinzugefügt werden. Damit können sie mit Makrosprachen bestimmter Anwendungsprogramme verglichen werden. Oft wird das verwendete SQL um herstellerspezifische Funktionen erweitert. Auch der Einsatz anderer Programmiersprachen wie etwa Java oder C# ist inzwischen teilweise möglich.
Gespeicherte Prozeduren tragen dazu bei, die Sicherheit einer Anwendung stark zu erhöhen. Da der Client in der Regel keine DELETE-, UPDATE- oder INSERT-Zugriffsrechte mehr benötigt, ist es Angreifern nicht möglich, selbst Datenbanken zu manipulieren, z. B. durch SQL-Injection. Der Client hat ausschließlich die Möglichkeit, bereits vorgefertigte Prozeduren aufzurufen. So können Softwareentwickler vermeiden, dass ein ungewünschtes Verhalten von Dritten hervorgerufen werden kann.
Implementierung Datenbanksystem Implementierungssprache Db2 SQL PL Firebird PSQL (teilweise auch Oracles PL/SQL) Informix S PLInformix Guide to SQL: Tutorial, Kapitel 10, Creating & Using SPL Routines, S. 371Informix Guide to SQL: Reference and Syntax, Kapitel 3, SPL Statements, S. 901 Oracle PL/SQL und Java Microsoft SQL Server Transact-SQL und diverse .NET Framework Sprachen MySQL, MariaDB SQL:2003 PostgreSQL PL/pgSQL und viele weitere eigene Sprachkonstrukte wie PL/Tcl, PL/Perl oder PL/Python SQLite nicht verfügbar
Extended Stored Procedure Extended Stored Procedure (Abkürzung: XP) ist eine von Microsoft SQL erweiterte Form der Stored procedure. XPs erlauben durch die Verwendung von DLLs komplexere Prozesse auszuführen. Je nach Microsoft SQL-Version sind diverse erweiterte gespeicherte Prozeduren vordefiniert,General Extended Stored Procedures (Transact-SQL). Microsoft MSDN während Administratoren weitere hinzufügen können.Adding an Extended Stored Procedure to SQL Server. Microsoft MSDN
Microsoft hat die Verwendung von XPs inzwischen als deprecated gekennzeichnet, was bedeutet, dass zukünftige Microsoft SQL-Versionen erweiterte Prozeduren nicht mehr unterstützen werden. Microsoft SQL Server 2012 unterstützt XPs allerdings noch. Als Ersatz nennt Microsoft die Verwendung der Laufzeitumgebung Common Language Runtime.Deprecated Database Engine Features in SQL Server 2012. Microsoft MSDN
Beispiele Die folgende gespeicherte Prozedur in SQL hat zwei Parameter @VorlNr, @PersNr vom Datentyp IntegerMicrosoft Docs: Create a Stored Procedure
CREATE PROCEDURE GibVorlesungen @VorlNr INT, @PersNr INT AS SELECT Vorlesung.VorlNr, Vorlesung.Titel, Professor.PersNr, Professor.Name FROM Professor INNER JOIN Vorlesung ON Professor.PersNr = Vorlesung.PersNr WHERE VorlNr = @VorlNr AND PersNr = @PersNr;Der AufrufEXECUTE GibVorlesungen 1001, 15;könnte folgendes Ergebnis zurückgeben (siehe SQL - Sicht): VorlNrTitelPersNrName1001Datenbanken15Urlauber
Siehe auch User Defined Function
Literatur
Weblinks
Einzelnachweise
Kategorie:SQL