Aufgabenverteilung

MySQL Stored Procedures

18.3.2009 von Redaktion pcmagazin und Andreas Hitzig

MySQL 5 erlaubt die Nutzung von Stored Functions und Stored Procedures. Der Workshop zeigt, wie Sie Datenbankabfragen damit effizienter gestalten.

ca. 2:20 Min
Ratgeber
  1. MySQL Stored Procedures
  2. Teil 2: MySQL Stored Procedures
  3. Teil 3: MySQL Stored Procedures
  4. Teil 4: MySQL Stored Procedures
  5. Teil 5: MySQL Stored Procedures
MySQL Stored Procedures
MySQL Stored Procedures
© Archiv

Lange Zeit mussten die Anwender von MySQL neidisch auf die Nutzer von anderen Datenbanken schielen, bei denen Stored Functions und Stored Procedures bereits seit Langem zur Tagesordnung gehören. Seit Version 5.0 besteht jedoch kein Grund zur Eifersucht mehr.

Stored Procedures

Bei einer Stored Procedure handelt es sich um eine Prozedur, die auf dem Datenbankserver gespeichert wird. Bis zur Implementierung in MySQL mussten Sie als Entwickler die Funktionalität auf dem Webserver abspeichern und entweder an dieser Stelle oder dem Webclient ausführen. Heute haben Sie die Wahl, an welcher Stelle Sie die Funktion oder Prozedur speichern.

Die Datenbank als Speicherort bietet eine Reihe von Vorteilen: Wenn Sie mit einer heterogenen Umgebung arbeiten und unterschiedliche Clients zu bedienen haben, bietet es sich an, den Datenbank-spezifischen Code auf dem Datenbank-Server zu speichern. Damit erreichen Sie wenigstens für diesen Teil der Anwendung eine Plattformunabhängigkeit und müssen ihn nicht in verschiedenen Plattformen und teilweise unterschiedlichen Programmiersprachen vorhalten.

Ein weiteres Argument, das im Zusammenhang mit Stored Procedures und Stored Functions immer angebracht wird, ist der verringerte Netzwerk-Verkehr. Vom Client zum Server muss nur noch der Aufruf der Funktion, nicht aber die komplette Datenbank-Abfrage übertragen werden. Außerdem können auf Basis der Ergebnismenge - falls notwendig - bereits auf der Datenbank-Seite zusätzliche Aktionen durchgeführt werden, sodass nur noch die relevanten Daten an den Client zurück übertragen werden.

Es gibt jedoch nicht nur Vorteile, sondern auch ein entscheidendes Argument, dass beim Einsatz von Stored Procedures immer auch mit Betracht gezogen werden muss: Die Ausführung von Berechnungen auf dem Datenbankserver benötigt zusätzliche Ressourcen, welche dann eventuell an anderer Stelle fehlen.

Gerade bei einer Vielzahl von parallelen Zugriffen kann es auf dem Datenbank-Server zu einem Kapazitätsengpass kommen. Deswegen sollten Sie auch, bevor Sie die Prozeduren und Funktionen in einer hochfrequentierten Umgebung zum Einsatz bringen, ausführliche Lasttests durchführen.

Grundlagen

Die erste eigene Stored Procedure ist schnell erstellt. Nutzen Sie zum Zugriff auf Ihre MySQL-Datenbank entweder einen Telnet-Client oder die MySQL-Konsole. Geben Sie als Erstes den Befehl

CREATE PROCEDURE hallo() SELECT
'Hallo';

ein. Die Prozedur macht später nichts anderes, als das Wort Hallo auszugeben. Der Aufruf ist ebenso einfach. Sie benötigen lediglich den Befehl CALL in Verbindung mit dem Namen der Prozedur, also

CALL hallo()\G

Parameter

Natürlich kommt der wahre Vorteil von prozeduraler Entwicklung erst mit dem Einsatz von Übergabewerten zum Tragen. Mit Prozediesem geben Sie dem Aufruf der Prozedur bestimmte Variablen mit, die innerhalb des Bausteins weiterverarbeitet werden. Es gibt bei MySQL insgesamt drei Parameter:

IN: Ein Wert wird in die Prozedur gegeben und kann dort geändert werden. Außerhalb der Prozedur bleibt der Wert unverändert. Dies ist der Standardparameter. • OUT: Es wird kein Wert an die Prozedur geliefert, es kann jedoch ein Wert zurückgeliefert werden. • INOUT: Dies fasst die beiden Eigenschaften von IN und OUT zusammen. Sie übergeben einen Wert an eine Prozedur, dieser wird dort verändert und wieder zurückgegeben.

Die unterschiedlichen Übergabeparameter werden in den folgenden Beispielen näher erläutert. Für die Beispiele wird eine Variable benötigt. Diese hat den Namen agent und trägt den Wert bond007. Legen Sie diese über die Kommandozeile oder die Konsole wie folgt fest:

SET @agent='bond007';

und prüfen Sie anschließend mit

SELECT @agent\G

Mehr lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

internet, webdesign, adobe,  Illustrator, CS6

Webdesign

Webdesign in Adobe Illustrator CS6

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.

Facebook stellte die neue Suche

Facebook

Facebooks Social Graph Search

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?

Der BGH erklärt das Internet zur Lebensgrundlage.

Online-Recht

Darauf müssen Sie bei den AGB achten

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.

Online-Urheberrecht: Unser Ratgeber bietet Tipps für das Cloud-Recht.

Online-Recht in der Cloud

Wie sieht das Urheberrecht in der Wolke aus?

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…

Logistik im E-Commerce: Prozesse rund um die Logistik.

E-Commerce-Logistik

Logistik im E-Commerce

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.