phpMyAdmin
 sql >> Datenbank >  >> Database Tools >> phpMyAdmin

Schwierigkeiten beim Schreiben von Stored Procedures in MYSQL

Wie unter Defining Stored Programs dokumentiert :

  • Wenn Sie den mysql verwenden Clientprogramm ein gespeichertes Programm mit Semikolon zu definieren, tritt ein Problem auf. Standardmäßig mysql selbst erkennt das Semikolon als Anweisungstrennzeichen, also müssen Sie das Trennzeichen vorübergehend neu definieren, damit mysql um die gesamte gespeicherte Programmdefinition an den Server zu übergeben.

    Dasselbe gilt für phpMyAdmin.

  • Zur Neudefinition von mysql Trennzeichen, verwenden Sie das delimiter Befehl.

    Nicht alle Versionen von phpMyAdmin erkennen das delimiter Befehl; stattdessen kann man das Delimiter verwenden Eingabefeld unter dem SQL-Eingabefeld:siehe Wie schreibe ich einen SP in phpMyAdmin (MySQL)?

  • Das Folgende ist ein Beispiel für eine Funktion, die einen Parameter akzeptiert, eine Operation unter Verwendung einer SQL-Funktion ausführt und das Ergebnis zurückgibt. In diesem Fall ist die Verwendung von delimiter nicht erforderlich weil die Funktionsdefinition keinen internen ; enthält Anweisungstrennzeichen:

    mysql> CREATE FUNCTION hello (s CHAR(20))
    mysql> RETURNS CHAR(50) DETERMINISTIC
        -> RETURN CONCAT('Hello, ',s,'!');
    Query OK, 0 rows affected (0.00 sec)
    

    In Ihrem Fall können Sie den BEGIN ... END Blockieren Sie zusammengesetzte Anweisungen und vermeiden Sie die Notwendigkeit, das Trennzeichen zu ändern.