Anfang des Inhaltsbereichs

Datenbankprozedur 

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 MySQL MaxDB 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:

·        Die Anzahl der Interaktionen zwischen Client und Server wird um Faktoren reduziert. Nur noch pro Operation auf einem Anwendungsobjekt ist eine Client-Server-Kommunikation erforderlich, nicht mehr pro SQL-Anweisung. Das erhöht die Performance von Client-Server-Konfigurationen erheblich.

·        Die SQL-Zugriffsschicht enthält prozedural formulierte Integritätsregeln und "business rules". Die Konzentration dieser Regeln auf der Server-Seite und ihre Elimination aus den Datenbankanwendungen führt dazu, dass jetzt an zentraler Stelle Änderungen dieser Regeln erfolgen können, die sofort in allen Datenbankanwendungen wirksam werden. Damit werden auch diese Integritäts- und Entscheidungsregeln Bestandteil des Katalogs im Datenbanksystem.

·        Eine auf die Server-Seite verlagerte SQL-Zugriffsschicht in der Form von Datenbankprozeduren erlaubt es auch, kundenspezifische Datenbankfunktionalität bereitzustellen und ist daher ein wesentliches Customizing-Werkzeug.

Um eine Datenbankprozedur ausführen zu können, muss 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, dass 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 muss auch bei einem Aufruf einer Datenbankprozedur sichergestellt sein, dass dieser Aufruf im Erfolgsfall die gewünschten Wirkungen hat, im Fehlerfall aber keinerlei Effekte im Datenbanksystem hinterlässt. Damit dieses Verhalten auch für Datenbankprozeduren erreicht wird, stellt MySQL MaxDB 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.

Sie können beliebig viele Datenbankprozeduren definieren.

Siehe auch:

Name einer Datenbankprozedur

Ende des Inhaltsbereichs