Aufgabenverteilung
Teil 3: MySQL Stored Procedures
- MySQL Stored Procedures
- Teil 2: MySQL Stored Procedures
- Teil 3: MySQL Stored Procedures
- Teil 4: MySQL Stored Procedures
- Teil 5: 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.

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|
Gutscheine
-
Peek & Cloppenburg* Düsseldorf
GLAMOUR SHOPPING WEEK bei Peek & Cloppenburg*: 20% Gutschein Zum Gutschein
bis 08.10.2023+ bis zu 1,0% Cashback -
XXXLutz
Glamour Shopping Week bei XXXLutz: 30% Rabatt + 22% Gutschein Zum Gutschein
bis 08.10.2023+ bis zu 3,0% Cashback -
Levi Strauss & Co.
Bis 25% sparen mit dem Levis Rabattcode zur GLAMOUR Shopping Week Zum Gutschein
bis 08.10.2023 -
DAZN
15€ Rabatt monatlich mit dem Jahresabo für DAZN Unlimited Zum Gutschein
bis 08.11.2023 -
Nespresso
Für Coffee Lover: 15% NESPRESSO Gutschein Zum Gutschein
bis 08.10.2023+ bis zu 1,5% Cashback -
eBay
10% Gutscheincode auf DYSON Zum Gutschein
bis 04.10.2023