[+/-]
CREATE PROCEDURE
und CREATE
FUNCTION
ALTER PROCEDURE
und ALTER FUNCTION
DROP PROCEDURE
und DROP FUNCTION
CALL
-AnweisungBEGIN ... END
-Syntax für komplexe AnweisungenDECLARE
-Anweisung
Eine gespeicherte Routine ist entweder eine Prozedur oder eine
Funktion. Gespeicherte Routinen werden mit den Anweisungen
CREATE PROCEDURE
und CREATE
FUNCTION
angelegt. Eine Prozedur wird mit einer
CALL
-Anweisung aufgerufen und kann nur über
Ausgabevariablen Werte zurückgeben. Eine Funktion kann innerhalb
einer Anweisung aufgerufen werden - wie jede andere Funktion auch
(also durch Nennung ihres Namens) - und einen Skalarwert
zurückliefern. Gespeicherte Routinen können andere gespeicherte
Routinen aufrufen.
Eine gespeicherte Prozedur oder Funktion steht mit einer bestimmten Datenbank in Zusammenhang. Das hat Folgen:
Wenn die Routine aufgerufen wird, wird implizit ein
USE
ausgeführt (und wieder rückgängig gemacht, wenn die Routine
endet). db_name
USE
-Anweisungen sind in
gespeicherten Routinen nicht zulässig.
Den Namen einer Routine können Sie mit einem Datenbanknamen
qualifizieren, etwa wenn Sie eine Routine benutzen möchten,
die nicht in der aktuellen Datenbank vorliegt. Um
beispielsweise eine Prozedur p
oder eine
Funktion f
aus der Datenbank
test
aufzurufen, können Sie CALL
test.p()
oder test.f()
sagen.
Wird eine Datenbank gelöscht, so werden alle ihre gespeicherten Routinen mitgelöscht.
MySQL unterstützt die praktischen Erweiterungen, die eine Nutzung
der regulären SELECT
-Anweisungen innerhalb von
gespeicherten Prozeduren ermöglichen (also ohne Cursors oder
lokale Variablen). Die Ergebnismenge einer solchen Anfrage wird
einfach direkt an den Client gesandt. Da mehrere
SELECT
-Anweisungen mehrere Ergebnismengen
generieren, muss der Client eine MySQL-Clientbibliothek verwenden,
die mehrere Ergebnismengen unterstützt. Das bedeutet, dass er die
Clientbibliothek einer MySQL-Version benötigt, die mindestens so
jung ist wie 4.1. Außerdem sollte der Client die Option
CLIENT_MULTI_STATEMENTS
angeben, wenn er sich
verbindet. C-Programme können dies mit der C-API-Funktion
mysql_real_connect()
tun (siehe
Abschnitt 24.2.3.51, „mysql_real_connect()
“).
Die folgenden Abschnitte beschreiben die Syntax, mit der gespeicherte Prozeduren und Funktionen erzeugt, geändert und aufgerufen werden.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.