Som dokumenterats under Definiera lagrade program :
Om du använder mysql klientprogram för att definiera ett lagrat program som innehåller semikolontecken, uppstår ett problem. Som standard är mysql själv känner igen semikolon som en satsavgränsare, så du måste omdefiniera avgränsaren tillfälligt för att orsaka mysql för att skicka hela den lagrade programdefinitionen till servern.
Detsamma gäller phpMyAdmin.
För att omdefiniera mysql avgränsare, använd
avgränsarenkommando.Inte alla versioner av phpMyAdmin känner igen
avgränsarenkommando; istället kan man användaDelimiterindataruta under SQL-inmatningsrutan:se Hur skriver jag en SP i phpMyAdmin (MySQL)?Följande är ett exempel på en funktion som tar en parameter, utför en operation med en SQL-funktion och returnerar resultatet. I det här fallet är det onödigt att använda
avgränsareeftersom funktionsdefinitionen inte innehåller någon intern;satsavgränsare:mysql>
CREATE FUNCTION hello (s CHAR(20))mysql>RETURNS CHAR(50) DETERMINISTIC->RETURN CONCAT('Hello, ',s,'!');Query OK, 0 rows affected (0.00 sec)I ditt fall kan du ta bort
BEGIN ... ENDsammansatt satsblock och undvik behovet av att ändra avgränsare.