Heim  >  Artikel  >  Datenbank  >  So schreiben Sie eine gespeicherte MySQL-Prozedur

So schreiben Sie eine gespeicherte MySQL-Prozedur

(*-*)浩
(*-*)浩Original
2019-05-17 11:16:5432062Durchsuche

Die gespeicherte MySQL-Prozedur ist eine Sammlung von SQL-Anweisungen. Manchmal benötigen wir möglicherweise eine große Reihe von SQL-Anweisungen oder wir müssen die Werte einiger Variablen zu diesem Zeitpunkt festlegen , wir sind absolut notwendig Schreiben Sie eine gespeicherte Prozedur. Lassen Sie uns vorstellen, wie eine gespeicherte Prozedur erstellt wird.

So schreiben Sie eine gespeicherte MySQL-Prozedur

Syntaxformat:

Sie können die CREATE PROCEDURE-Anweisung verwenden, um eine gespeicherte Prozedur zu erstellen.
Das Syntaxformat lautet wie folgt:

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名> <类型>

Die Syntaxbeschreibung lautet wie folgt:

1) Prozedurname

Der Name der gespeicherten Prozedur, die standardmäßig in der aktuellen Datenbank erstellt wird. Wenn Sie eine gespeicherte Prozedur in einer bestimmten Datenbank erstellen müssen, stellen Sie dem Namen den Namen der Datenbank voran, db_name.sp_name. Es ist zu beachten, dass beim Namen vermieden werden sollte, denselben Namen wie die in MySQL integrierte Funktion zu wählen, da sonst ein Fehler auftritt.

2) Prozessparameter

Die Parameterliste der gespeicherten Prozedur. Dabei ist der Parametername und der Typ des Parameters (kann jeder gültige MySQL-Datentyp sein). Wenn mehrere Parameter vorhanden sind, trennen Sie diese in der Parameterliste durch Kommas. Eine gespeicherte Prozedur kann keine Parameter haben (in diesem Fall muss nach dem Namen der gespeicherten Prozedur noch ein Klammerpaar hinzugefügt werden), oder sie kann einen oder mehrere Parameter haben.

Gespeicherte MySQL-Prozeduren unterstützen drei Arten von Parametern, nämlich Eingabeparameter, Ausgabeparameter und Eingabe-/Ausgabeparameter, die jeweils durch die drei Schlüsselwörter IN, OUT und INOUT identifiziert werden. Darunter können Eingabeparameter an eine gespeicherte Prozedur übergeben werden, Ausgabeparameter werden verwendet, wenn die gespeicherte Prozedur ein Operationsergebnis zurückgeben muss, und Eingabe-/Ausgabeparameter können sowohl als Eingabeparameter als auch als Ausgabeparameter dienen. Es ist zu beachten, dass der Parametername nicht mit dem Spaltennamen der Datentabelle identisch sein darf. Andernfalls wird der Parametername von der SQL-Anweisung der gespeicherten Prozedur als Spaltenname behandelt, obwohl keine Fehlermeldung zurückgegeben wird unvorhersehbare Ergebnisse.

3) Prozedurhauptteil

Der Hauptteil der gespeicherten Prozedur, auch gespeicherter Prozedurhauptteil genannt, enthält die SQL-Anweisungen, die beim Aufruf der Prozedur ausgeführt werden müssen . Dieser Abschnitt beginnt mit dem Schlüsselwort BEGIN und endet mit dem Schlüsselwort END. Wenn der Hauptteil der gespeicherten Prozedur nur eine SQL-Anweisung enthält, kann das BEGIN-END-Flag weggelassen werden.

Bei der Erstellung gespeicherter Prozeduren wird häufig ein sehr wichtiger MySQL-Befehl verwendet, nämlich der DELIMITER-Befehl. Insbesondere Benutzer, die die MySQL-Datenbank über die Befehlszeile bedienen, müssen lernen, diesen Befehl zu verwenden.

Wenn der Server in MySQL SQL-Anweisungen verarbeitet, wird standardmäßig das Semikolon als Endmarkierung der Anweisung verwendet. Beim Erstellen einer gespeicherten Prozedur kann der Hauptteil der gespeicherten Prozedur jedoch mehrere SQL-Anweisungen enthalten. Wenn diese SQL-Anweisungen immer noch ein Semikolon als Anweisungsabschlusszeichen verwenden, endet der MySQL-Server mit der ersten SQL-Anweisung, die während der Verarbeitung auftritt Terminator des gesamten Programms und verarbeitet die nachfolgenden SQL-Anweisungen im Hauptteil der gespeicherten Prozedur nicht mehr. Um dieses Problem zu lösen, können Sie normalerweise den Befehl DELIMITER verwenden, um den Endbefehl in ein anderes Zeichen zu ändern.

Das Syntaxformat lautet wie folgt:

DELIMITER $$

Die Syntaxbeschreibung lautet wie folgt: $$ ist ein benutzerdefiniertes Abschlusszeichen. Normalerweise kann dieses Symbol einige Sonderzeichen sein , wie zum Beispiel zwei „?“ oder zwei „¥“ usw. Wenn Sie den DELIMITER-Befehl verwenden, sollten Sie die Verwendung des Backslash-Zeichens „“ vermeiden, da es sich um ein MySQL-Escape-Zeichen handelt.
Geben Sie die folgende SQL-Anweisung in den MySQL-Befehlszeilen-Client ein.

mysql > DELIMITER ??

Nach erfolgreicher Ausführung dieser SQL-Anweisung wird die Endmarkierung eines Befehls, einer Anweisung oder eines Programms durch zwei Fragezeichen „??“ ersetzt.

Wenn Sie zum Standard-Semikolon „;“ als Endmarkierung zurückkehren möchten, geben Sie die folgende Anweisung in den MySQL-Befehlszeilen-Client ein:

mysql > DELIMITER ;

Hinweis: DELIMITER und Semikolon „;“ Zwischen ihnen muss ein Abstand sein. Beim Erstellen einer gespeicherten Prozedur müssen Sie über die CREATE ROUTINE-Berechtigung verfügen. Mit dem Befehl SHOW PROCEDURE STATUS können Sie anzeigen, welche gespeicherten Prozeduren in der Datenbank vorhanden sind. Um bestimmte Informationen zu einer gespeicherten Prozedur anzuzeigen, können Sie SHOW CREATE PROCEDURE verwenden.

Erstellen Sie eine gespeicherte Prozedur ohne Parameter

Die Funktion der gespeicherten Prozedur besteht darin, Schülernoteninformationen aus der Schülernoteninformationstabelle abzufragen. Die Eingabe-SQL-Anweisung und der Ausführungsprozess sind wie folgt dargestellt.

mysql> DELIMITER //
mysql> CREATE PROCEDURE ShowStuScore()
    -> BEGIN
    -> SELECT * FROM tb_students_score;
    -> END //
Query OK, 0 rows affected (0.09 sec)

Das obige ist der detaillierte Inhalt vonSo schreiben Sie eine gespeicherte MySQL-Prozedur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn