Aufgabenverteilung

Teil 3: MySQL Stored Procedures

Komplexere Abfragen

Damit haben Sie die Rahmendaten für eine Stored Procedure, die es nun gilt, mit Leben zu füllen. Für die nächsten Abfragen reicht eine normale Variable nicht mehr aus.

MySQL Stored Procedures

© Archiv

Sie können innerhalb von Prozeduren natürlich auch auf SQL-Funktionen zurückgreifen.

Deswegen sollten Sie sich eine Tabelle bsp1 anlegen mit zwei Feldern: einem Schlüssel ident, der auch Primärschlüssel ist und einem Textfeld info mit 20 Zeichen.

CREATE TABLE bsp1 (ident INT, info
VARCHAR(20), PRIMARY KEY(ident));

Bevor Sie mit der Erstellung Ihrer ersten größeren Prozedur beginnen können, müssen Sie noch ein Zeichen als Trennzeichen festlegen. Dies ist notwendig, weil MySQL auch bei der Definition einer Prozedur beim Abschluss der Datenbankabfrage ein Semikolon erwartet, zu diesem Zeitpunkt jedoch die Prozedur nicht abgeschlossen ist.

Aus diesem Grund müssen Sie sich mit einem Trennzeichen - einem sogenannten delimiter - behelfen. Oftmals wird für diesen Zweck die vertikale Linie [ALTGR + <] gewählt und über

Delimiter |

gesetzt.

Die Prozedur macht nichts anderes, als die Länge der übergebenen Zeichenkette zu ermitteln und diese der Variablen @a zuzuweisen. Die zweite Variable @b erhält einfacherweise nur den übergebenen Text. Diese beiden Daten werden in die Tabelle bsp1 eingefügt. Die resultierende Prozedur sieht dann wie folgt aus:

CREATE PROCEDURE bsp1_p
(p VARCHAR(20))
BEGIN
SET @a=CHAR_LENGTH(p);
SET @b=p;
INSERT INTO bsp1(ident, info)
VALUES(@a, @b);
END|

Der Aufruf erfolgt wie gewohnt über den Prozedurnamen zusammen mit dem Übergabewert, also beispielsweise CALL bsp1_p('FCBAYERN');

Wie Sie bei der Eingabe sicherlich bemerkt haben, verlangt MySQL immer noch nach der Eingabe den Delimiter als Abschlusszeichen und akzeptiert nicht das Semikolon. Setzen Sie einfach den Wert für das Trennzeichen wieder auf den Ursprungswert zurück über

delimiter ;

und Sie können anschließend auch wieder alle Abfragen wie gewohnt ausführen.

Lokale Variablen

Bis jetzt sind nur globale Session-Variablen zum Einsatz gekommen, auf diese aus jedem Kontext zugreifen können. Gerade bei Prozeduren ist es jedoch oftmals notwendig, lokale Variablen zu definieren, die auch nicht global gültig sind. Dies verwenden Sie den Schlüsselbegriff DECLARE und verzichten beim Bezeichner der Variable auf das @-Zeichen.

Im folgenden Beispiel wird wieder die Länge des übergebenen Texts berechnet und anschließend über die Hilfsvariable tmp dieser Wert verdreifacht und anschließend als Schlüssel für die Tabelle bsp1 verwendet.

CREATE PROCEDURE bsp2_p
(p VARCHAR(20))
BEGIN
DECLARE tmp INT;
SET tmp=CHAR_LENGTH(p);
SET tmp=tmp*3;
INSERT INTO bsp1(ident, info)
VALUES(tmp, p);
END|

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".