Aufgabenverteilung

Teil 2: MySQL Stored Procedures

ob die Zuweisung erfolgreich verlaufen ist. Die Prozedur change_agent() soll der Variablen agent einen neuen Wert zuweisen. Da diese Variable global definiert ist und somit sowohl innerhalb, wie auch außerhalb der Prozedur verändert werden kann, muss diese nicht an die Prozedur mit übergeben werden.

CREATE PROCEDURE change_agent(p
VARCHAR(10)) SET @agent = p;

Da der IN-Parameter der Standard-Wert ist, muss er an dieser Stelle nicht explizit aufgeführt werden. Der Übergabewert p kann in Webdesignnerhalb der Variable genutzt und verändert werden, hat jedoch nach Beendigung der Prozedur wieder seinen alten Wert.

OUT und INOUT

Bei der OUT-Variante wird wie bereits erwähnt kein Wert an die Prozedur geliefert sondern nur ein Rückgabewert erwartet, dem Sie eine Variable zuweisen müssen. Setzen Sie dazu als Erstes den Wert des Agenten wieder auf bond007.

MySQL Stored Procedures

© Archiv

Beim Beispiel mit dem OUT-Parameter wird eine globale Variable verändert und zurückgegeben.
SET @agent='bond007';

Erzeugen Sie anschließend eine Prozedur, welcher Sie eine Variable übergeben, die anschließend in der Prozedur verändert wird.

CREATE PROCEDURE change_agent2
(OUT p VARCHAR(10)) SET p ='bond008';

Der Aufruf

CALL change_agent2(@agent)

weist der Variablen @agent schließlich den neuen Wert bond008 zu.

Die dritte Variante kann sowohl einen Wert mitgeben als auch einen Wert zurückgeben.

CREATE PROCEDURE change_agent3
(INOUT p INT) SET @leben=p*2;

Somit wird der globalen Variablen @leben innerhalb der Prozedur der doppelte Wert zugewiesen und dieser ist auch außerhalb der Prozedur weiter verfügbar. Der Aufruf

CALL change_agent3(40)

übergibt somit in die Prozedur die Zahl 40, welche verdoppelt und anschließend mit der globalen Variablen @leben verknüpft wird.

Prozedur-Aufbau

Eine Prozedur besitzt somit folgenden Aufbau: CREATE PROCEDURE name ([parameter]) [zusätze] BEGIN Anweisungen END

Wobei der Parameter noch einmal genauer spezifiziert ist mit [IN / OUT / INOUT] parameter_name DATENTYP.

Beim Anlegen einer Prozedur können Sie darüber hinaus noch eine Reihe von Zusätzen verwenden, die sich untereinander frei kombinieren lassen: • LANGUAGE SQL legt die Sprache fest, in welcher die Prozedur geschrieben wird. Aktuell steht nur SQL zur Verfügung. • NOT DETERMINISTIC beschreibt, dass die Prozedur bei gleicher Eingabe nicht immer den gleichen Rückgabewert zur Verfügung stellt. Das Gegenteil wäre DETERMINISTIC. • MODIFIES SQL DATA zeigt an, dass Daten durch die Prozedur verändert werden können. Alternativ zu diesem Wert gibt es noch CONTAINS SQL, NO SQL und READS SQL DATA. Der Erste aus dieser Gruppe beschreibt, dass Prozedur weder lesend noch schreibend auf Daten zugreift und die letzten beiden geben an, dass keine SQL-Befehle ausgeführt werden oder nur lesend auf die Datenbank zugegriffen wird. • SQL SECURITY DEFINER bestimmt, welche Berechtigungen beim Ausführen der Prozedur in Betracht gezogen werden sollen. Es stehen Anleger (DEFINER) und Aufrufender (INVOKER) zur Auswahl. • COMMENT: Spezielles Kommentarfeld zu einer Produktion.

Bevor Sie nun loslegen mit der Entwicklung Ihrer ersten größeren Prozedur lohnt ein Blick zurück - mithilfe des Befehls SHOW PROCEDURE STATUS \G sehen Sie alle in der Datenbank vorhandenen Stored Procedures.

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​".