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 leDelimiter
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.