Zum Inhalt springen
Der Guide für ein smartes Leben.
Aufgabenverteilung

Teil 4: MySQL Stored Procedures

Autoren: Redaktion pcmagazin und Andreas Hitzig • 18.3.2009 • ca. 1:20 Min

Arbeiten mit Tabellen Natürlich können Sie anstelle von statischen Werten innerhalb von Prozeduren auch mit Werten aus einer Datenbank arbeiten. Im folgenden Beispiel wird der erste Datensatz aus der Datenbank bsp1 gelesen und anschließend ausgeben....

Arbeiten mit Tabellen

Natürlich können Sie anstelle von statischen Werten innerhalb von Prozeduren auch mit Werten aus einer Datenbank arbeiten. Im folgenden Beispiel wird der erste Datensatz aus der Datenbank bsp1 gelesen und anschließend ausgeben.

CREATE PROCEDURE bsp3()
BEGIN
DECLARE L_IDENT INT;
DECLARE L_INFO VARCHAR(20));
SELECT IDENT, INFO INTO L_IDENT,
L_INFO FROM bsp1 LIMIT 1;
SELECT L_IDENT, L_INFO;
END|

Die Einschränkung auf den ersten Datensatz der Tabelle bsp1 erreichen Sie über den Zusatz limit 1 innerhalb der SQL-Abfrage.

Bedingungen

Die bisherigen Beispiele nutzen zum größten Teil Standard-SQL-Befehle. Damit lassen sich jedoch gewisse Sachverhalte, wie beispielsweise Bedingungen oder Schleifen nicht abbilden. Deswegen hat man konsequenterweise innerhalb von Prozeduren und Funktionen den Sprachschatz um einige Elemente, wie beispielsweise Bedingungen, erweitert.

MySQL Stored Procedures
Für die temporäre Verwendung von Werten nutzen Sie lokale Variablen.
© Archiv

Eine IF-Bedingung hat in MySQL folgenden Aufbau:

IF [Bedingung] THEN [Aktion] ELSE [Aktion] END IF

Im folgenden Beispiel soll die Zeichenlänge zweier Strings, die Sie als Variablen der Prozedur mitgeben, miteinander verglichen und als Meldung ausgegeben werden, welche der beiden länger ist.

CREATE PROCEDURE bsp3()
BEGIN
DECLARE L_IDENT INT;
DECLARE L_INFO VARCHAR(20));
SELECT IDENT, INFO INTO L_IDENT,
L_INFO FROM bsp1 LIMIT 1;
SELECT L_IDENT, L_INFO;
END|

Im ersten Schritt werden zwei lokale Hilfsvariablen L_LEN1 und L_LEN2 definiert, in denen anschließend die Länge der beiden Strings gespeichert wird. Diese werden verglichen und abhängig vom Ergebnis eine entsprechende Meldung ausgegeben.

Fallunterscheidung

Als Alternative zur normalen IF-Schleife bietet MySQL auch noch die CASE-Anweisung an, bei der Sie abhängig vom Wert einer Variable verschiedene Folgeaktionen ansteuern können.

Der Aufbau der Anweisung sieht folgendermaßen aus: CASE Variable WHEN Wert1 THEN Aktion1; WHEN Wert2 THEN Aktion2; ... WHEN WertX THEN AktionX; ELSE AktionY; END CASE;

Im Beispiel wird anhand der Rückennummer der passende Spieler des FC Bayern München zugeordnet.