Ich würde das Semikolon nach END
entfernen .
...
END
|
DELIMITER ;
Zu Ihrem Kommentar können Sie das aktuelle Trennzeichen nicht verwenden, wenn Sie ein neues Trennzeichen deklarieren. Das klingt verwirrend, aber überlegen Sie, ob Sie Folgendes tun:
DELIMITER |;
Jetzt würde MySQL denken, dass das Trennzeichen "|;" ist. (zwei Zeichen, ein senkrechter Strich und ein Semikolon). Wenn Sie darüber nachdenken, DELIMITER
muss vom MySQL-Client auf besondere Weise behandelt werden. Es ist die einzige Anweisung, die nicht kann gefolgt vom aktuellen Trennzeichen.
Wenn Sie also das Trennzeichen auf Pipe setzen, tun Sie dies:
DELIMITER |
Wenn Sie es wieder auf Semikolon setzen, gehen Sie wie folgt vor:
DELIMITER ;
FWIW, ich habe Folgendes ohne Fehler in meiner lokalen Testdatenbank unter MySQL 5.0.75 ausgeführt:
DROP FUNCTION IF EXISTS PersonName;
DELIMITER |
CREATE FUNCTION PersonName( personID SMALLINT )
RETURNS CHAR(20)
BEGIN
DECLARE pname CHAR(20) DEFAULT '';
SELECT name INTO pname FROM family WHERE ID=personID;
RETURN pname;
END
|
DELIMITER ;