Come documentato in Definizione dei programmi archiviati :
Se utilizzi mysql programma client per definire un programma memorizzato contenente caratteri punto e virgola, sorge un problema. Per impostazione predefinita, mysql riconosce il punto e virgola come delimitatore di istruzione, quindi è necessario ridefinire temporaneamente il delimitatore per causare mysql per passare l'intera definizione del programma memorizzato al server.
Lo stesso vale per phpMyAdmin.
Per ridefinire mysql delimitatore, usa il
delimiter
comando.Non tutte le versioni di phpMyAdmin riconoscono il
delimiter
comando; invece, si può usare ilDelimiter
casella di input sotto la casella di input SQL:vedere Come faccio a scrivere un SP in phpMyAdmin (MySQL)?Di seguito è riportato un esempio di una funzione che accetta un parametro, esegue un'operazione utilizzando una funzione SQL e restituisce il risultato. In questo caso, non è necessario utilizzare
delimiter
perché la definizione della funzione non contiene;
interni delimitatori di istruzione:mysql>
CREATE FUNCTION hello (s CHAR(20))
mysql>RETURNS CHAR(50) DETERMINISTIC
->RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected (0.00 sec)Nel tuo caso, puoi rimuovere
BEGIN ... END
blocco dell'istruzione composta ed evitare la necessità di modificare il delimitatore.