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
delimitercomando.Non tutte le versioni di phpMyAdmin riconoscono il
delimitercomando; invece, si può usare ilDelimitercasella 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
delimiterperché 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 ... ENDblocco dell'istruzione composta ed evitare la necessità di modificare il delimitatore.