In einer gut strukturierten Datenbankanwendung sind die SQL-Anweisungen typischerweise nicht über die gesamte Anwendung verteilt, sondern werden in einer Zugriffsschicht konzentriert. Diese Zugriffsschicht hat zur restlichen Anwendung eine prozedurale Schnittstelle, an der die Operationen auf Anwendungsobjekten in Form abstrakter Datentypen bereitgestellt werden.
In Client-Server-Konfigurationen erfolgt bei der Ausführung einer jeden SQL-Anweisung in der Zugriffsschicht eine Interaktion zwischen dem Client und dem Server. Die Anzahl dieser Interaktionen kann drastisch reduziert werden, wenn die SQL-Zugriffsschicht nicht mehr im Client, sondern im Server abläuft.
Dazu stellt SAP DB eine Sprache (spezielle SQL-Syntax) bereit, in der die Formulierung einer SQL-Zugriffsschicht auf der Server-Seite ermöglicht wird. Diese spezielle SQL-Syntax kann verwendet werden, um Datenbankprozeduren und
Trigger zu definieren.Das hat drei wesentliche Vorteile:
Um eine Datenbankprozedur ausführen zu können, muß ein Benutzer das Aufrufprivileg dafür besitzen. Dieses Aufrufprivileg ist unabhängig davon, welche Privilegien der Benutzer auf den Tabellen und Spalten besitzt, die in der Datenbankprozedur benutzt werden. Es ist deshalb möglich, daß ein Benutzer über eine Datenbankprozedur SQL-Anweisungen ausführen kann, die für ihn außerhalb dieser Datenbankprozedur nicht zulässig sind.
Datenbankprozeduren werden aus der Anwendungsprogrammiersprache heraus explizit aufgerufen. Sie können Parameter enthalten, wobei nur
LONG-Spalten ausgeschlossen sind. In wieweit LONG-Spalten innerhalb von Datenbankprozeduren verwendet werden können, hängt von deren Länge und dem zur Verfügung stehenden Speicherplatz ab.Wie bei jeder SQL-Anweisung muß auch bei einem Aufruf einer Datenbankprozedur sichergestellt sein, daß dieser Aufruf im Erfolgsfall die gewünschten Wirkungen hat, im Fehlerfall aber keinerlei Effekte im Datenbanksystem hinterläßt. Damit dieses Verhalten auch für Datenbankprozeduren erreicht wird, stellt SAP DB geschachtelte Transaktionen bereit. Jeder Aufruf einer Datenbankprozedur kann innerhalb einer
Subtransaktion ablaufen, die zurückgesetzt werden kann, ohne die Transaktionssteuerung der Datenbankanwendung zu beeinträchtigen.
Siehe auch:
Name einer Datenbankprozedur