Mysql
 sql >> Base de données >  >> RDS >> Mysql

Créer une fonction via MySQLdb

Le DELIMITER La commande est un client shell MySQL intégré, et elle n'est reconnue que par ce programme (et MySQL Query Browser). Il n'est pas nécessaire d'utiliser DELIMITER si vous exécutez des instructions SQL directement via une API.

Le but de DELIMITER est de vous aider à éviter toute ambiguïté sur la fin de la CREATE FUNCTION instruction, lorsque l'instruction elle-même peut contenir des points-virgules. Ceci est important dans le client shell, où par défaut un point-virgule termine une instruction SQL. Vous devez définir le terminateur d'instruction sur un autre caractère afin de soumettre le corps d'une fonction (ou d'un déclencheur ou d'une procédure).

CREATE FUNCTION trivial_func (radius float) 
    RETURNS FLOAT

    BEGIN
    IF radius > 1 THEN
        RETURN 0.0; <-- does this semicolon terminate RETURN or CREATE FUNCTION?
    ELSE
        RETURN 1.0;
    END IF;
END

Étant donné que l'API vous permet généralement de soumettre une instruction SQL à la fois, il n'y a aucune ambiguïté - l'interface sait que tout point-virgule à l'intérieur du corps de votre définition de fonction ne termine pas l'ensemble de CREATE FUNCTION déclaration. Il n'est donc pas nécessaire de modifier le terminateur de l'instruction avec DELIMITER .