Ik zou de puntkomma verwijderen na END
.
...
END
|
DELIMITER ;
Wat betreft uw opmerking, u kunt het huidige scheidingsteken niet gebruiken bij het declareren van een nieuw scheidingsteken. Dat klinkt verwarrend, maar overweeg of u dit doet:
DELIMITER |;
Nu zou MySQL denken dat het scheidingsteken "|;" is (twee karakters, een pijp en een puntkomma). Als je erover nadenkt, DELIMITER
moet op een speciale manier worden behandeld door de MySQL-client. Het is de enige verklaring die niet kan worden gevolgd door het huidige scheidingsteken.
Dus als je het scheidingsteken op pipe instelt, doe dan dit:
DELIMITER |
Als u het terugzet naar een puntkomma, doet u dit:
DELIMITER ;
FWIW, ik heb het volgende zonder fouten uitgevoerd in mijn lokale testdatabase op MySQL 5.0.75:
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 ;