Jag skulle ta bort semikolonet efter END
.
...
END
|
DELIMITER ;
Om din kommentar kan du inte använda den nuvarande avgränsaren när du deklarerar en ny avgränsare. Det låter förvirrande, men överväg om du gör så här:
DELIMITER |;
Nu skulle MySQL tro att avgränsaren är "|;" (två tecken, en pipa och ett semikolon). Om du tänker efter, DELIMITER
måste behandlas på ett speciellt sätt av MySQL-klienten. Det är det enda påståendet som inte kan följs av den aktuella avgränsaren.
Så när du ställer in avgränsaren till pipe, gör du så här:
DELIMITER |
När du ställer tillbaka den till semikolon, gör så här:
DELIMITER ;
FWIW, jag körde följande utan fel på min lokala testdatabas 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 ;