MySQL Procedure

erstellt am: 02.03.2018 | von: mario | Kategorie(n): Programmierung

Wie kann ich eine Prozedur in MySQL anlegen?

Eine Procedure kann dazu verwendet werden mehrere SQL Befehle anzustoßen.

Um eine Procedure anzulegen, kann ich diverse SQL Tools nutzen, oder sebst ein SQL zum Erstellen anlegen.
Wenn ich mich für das eigene sql entscheide muss ich für das CREATE Kommando einen eigenen Delimiter verwenden.
Warum? Der Delimiter dient dazu das Ende des Befehles für den SQL Server zu markieren. Da eine Procedure mehrere Kommandos enthält, welche mit dem Semikolon abgeschlossen werden, würde der Server es nach dem ersten Semikolon einen SQL Befehl erkennen und ausführen. Das wiederum würde einen Fehler erzeugen.
Um dies zu umgehen setze ich vor der Erstellung der Procedure meinen Delimiter auf zB $$ und am Ende wieder auf ;.

-- ich setze meinen Delimiter auf $$
DELIMITER $$

-- eventuell gibt es eine alte Version meiner Prozedure, daher lösche ich diese
DROP PROCEDURE IF EXISTS MY_FIRST_PROCEDURE;
-- nun erzeuge ich meine Procedure
CREATE PROCEDURE MY_FIRST_PROCEDURE (VariableA VARCHAR(255), VariableB VARCHAR(255))
BEGIN
    -- hier kann nun ganz normaler sql ausgeführt werden
    -- SELECT, UPDATE, DELETE, Aufruf von Funtionen und Prozeduren
    
    -- innerhalb er Prozedure verwende ich den Standard Delimiter
    SELECT CONCAT('Hallo ', VariableA, ' ', VariableB);

-- am Ende den gesetzten Delimiter
END$$

-- nun setze ich den Delimiter auf Standard zurück
DELIMITER ;

Ausführen kann ich diese Prozedure wie folgt:

CALL MY_FIRST_PROCEDURE("Vorname", "Nachname");