phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Difficulté à écrire une procédure stockée dans MYSQL

Comme documenté sous Définir les programmes stockés :

  • Si vous utilisez mysql programme client pour définir un programme stocké contenant des points-virgules, un problème se pose. Par défaut, mysql reconnaît lui-même le point-virgule comme délimiteur d'instruction, vous devez donc redéfinir temporairement le délimiteur pour provoquer mysql pour transmettre la totalité de la définition de programme stockée au serveur.

    Il en va de même pour phpMyAdmin.

  • Pour redéfinir le mysql délimiteur, utilisez le delimiter commande.

    Toutes les versions de phpMyAdmin ne reconnaissent pas le delimiter commande; à la place, on peut utiliser le Delimiter zone de saisie sous la zone de saisie SQL :voir Comment écrire un SP dans phpMyAdmin (MySQL) ?

  • Voici un exemple de fonction qui prend un paramètre, effectue une opération à l'aide d'une fonction SQL et renvoie le résultat. Dans ce cas, il est inutile d'utiliser le delimiter car la définition de la fonction ne contient pas de ; interne délimiteurs d'instruction :

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

    Dans votre cas, vous pouvez supprimer le BEGIN ... END bloc d'instruction composé et évite d'avoir à changer le délimiteur.