Jeg ville fjerne semikolon efter END
.
...
END
|
DELIMITER ;
Med hensyn til din kommentar kan du ikke bruge den nuværende afgrænsning, når du erklærer en ny afgrænsning. Det lyder forvirrende, men overvej, om du gør dette:
DELIMITER |;
Nu vil MySQL tro, at afgrænseren er "|;" (to tegn, en pibe og et semikolon). Hvis du tænker over det, DELIMITER
skal blive behandlet på en særlig måde af MySQL-klienten. Det er det eneste udsagn, der ikke kan efterfølges af den aktuelle afgrænsning.
Så når du indstiller afgrænseren til pipe, skal du gøre dette:
DELIMITER |
Når du indstiller det tilbage til semikolon, skal du gøre dette:
DELIMITER ;
FWIW, jeg kørte følgende uden fejl på min lokale testdatabase på 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 ;