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änsaren
kommando.Inte alla versioner av phpMyAdmin känner igen
avgränsaren
kommando; istället kan man användaDelimiter
indataruta 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änsare
eftersom 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 ... END
sammansatt satsblock och undvik behovet av att ändra avgränsare.