Suchen und Finden
Service
Infos und Kontakt
5 SQL-Syntax für gespeicherte Routinen (S. 109-110)
Seit Version 5 bietet MySQL Unterstützung für gespeicherte Routinen. Gespeicherte Routinen sind ausführbare Datenbankobjekte, d.h. Programme, die in Datenbanken gespeichert und auf dem Datenbank-Server ausgeführt werden. In MySQL werden gespeicherte Routinen in einer Untermenge der im SQL 2003-Standard definierten SQL-Programmiersprache für gespeicherte Routinen geschrieben. Eine gespeicherte Routine kann aus einer Mischung dieser speziellen SQL-Anweisungen und gewöhnlicher SQL-Anweisungen für den Zugriff auf Tabellen usw. bestehen. Bei den verschiedenen Arten gespeicherter Routinen gibt es dabei jeweils unterschiedliche Einschränkungen hinsichtlich der SQL-Anweisungen, die in gespeicherten Routinen erlaubt sind.
Gespeicherte Routinen können Funktionen, Prozeduren oder Trigger sein. Gespeicherte Funktionen werden mit der CREATE FUNCTION-Anweisung erzeugt und können wie MySQLs eingebaute Funktionen in SQL-Anweisungen verwendet werden. Gespeicherte Prozeduren werden mit der CREATE PROCEDURE-Anweisung erzeugt. Anders als gespeicherte Funktionen haben sie keinen Rückgabewert und können deswegen auch nicht in SQL-Ausdrücken verwendet werden. Stattdessen werden sie über eine spezielle Anweisung, CALL PROCEDURE, aufgerufen. Trigger sind Routinen, die nicht vom Benutzer, sondern von der Datenbank aufgerufen werden, wenn ein bestimmtes Ereignis eintritt. Das Ereignis, mit dem ein Trigger verknüpft ist, wird dabei festgelegt, wenn der Trigger mit der CREATE TRIGGER-Anweisung erzeugt wird.
Gespeicherte Funktionen und Prozeduren können Argumente haben. Bei Funktionen können diese Argumente nur IN-Parameter sein, Prozeduren hingegen unterstützen auch OUTund INOUT-Parameter. Diese sind die einzige Möglichkeit, um aus gespeicherten Prozeduren Werte zurückzuliefern. Die Anweisungen, mit denen gespeicherte Routinen angelegt und verwaltet werden, werden in Kapitel 4 beschrieben. Eine Auflistung der SQL-Anweisungen für gespeicherte Prozeduren, Funktionen und Trigger finden Sie in den Abschnitten »Gespeicherte Prozeduren und Funktionen« und »Trigger« in der Einleitung von Kapitel 4.
Die SQL-Programmiersprache für gespeicherte Routinen besteht aus einem Satz von SQLAnweisungen, die verschiedene Aspekte der prozeduralen Programmierung – wie Schleifen, lokale Variablen und bedingte Ausführung – ermöglichen. Diese Anweisungen folgen der üblichen SQL-Syntax und ähneln denen, die in anderen SQL-Programmiersprachen für gespeicherte Routinen wie Oracles PL/SQL verwendet werden.
Syntaktisch gesehen können diese Anweisungen in zwei Gruppen gegliedert werden: einfache Anweisungen und zusammengesetzte Anweisungen. Einfache Anweisungen sind beispielsweise die SET-, die DECLARE- oder die verschiedenen Anweisungen zur Arbeit mit Cursorn. Zusammengesetzte Anweisungen sind beispielsweise die IF-Anweisung oder die verschiedenen Schleifenanweisungen. Zusammengesetzte Anweisungen bestehen in der Regel aus mehreren Schlüsselwörtern, die den Anfang, die verschiedenen Elemente und das Ende der Anweisung markieren.
Wenn in der Syntaxbeschreibung für ein Element einer zusammengesetzten Anweisung angegeben wird, dass in ihm Anweisungen erlaubt sind, heißt das immer, dass an dieser Stelle beliebig viele, jeweils durch Semikola abgeschlossene Anweisungen erlaubt sind. Die Schlüsselwörter selbst dienen als Anfang- und End-Markierung für den jeweiligen Anweisungsblock. Wenn mehrere Anweisungen verwendet werden, muss dazu nicht explizit ein Anweisungsblock deklariert werden. Wie einfache Anweisungen müssen auch zusammengesetzte Anweisungen immer mit einem Semikolon abgeschlossen werden.
Wenn Sie eine gespeicherte Routine eingeben oder eine Datei einlesen, die eine gespeicherte Routine enthält, denken Sie daran, zuvor das Zeilenendezeichen umzuschalten, damit die Semikola im Routinen-Body nicht als Ende der aktuellen Anweisung interpretiert werden. Beim mysql-Client können Sie dazu beispielsweise den Befehl delimiter verwenden.
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion





















