Odebral bych středník za END
.
...
END
|
DELIMITER ;
Pokud jde o váš komentář, nemůžete použít aktuální oddělovač při deklarování nového oddělovače. Zní to zmateně, ale zvažte, zda to uděláte:
DELIMITER |;
Nyní by si MySQL myslelo, že oddělovač je "|;" (dva znaky, fajfka a středník). Pokud o tom přemýšlíte, DELIMITER
musí klient MySQL ošetří zvláštním způsobem. Je to jediné prohlášení, které nemůže za ním následuje aktuální oddělovač.
Takže při nastavování oddělovače na rouru proveďte toto:
DELIMITER |
Při nastavování zpět na středník postupujte takto:
DELIMITER ;
FWIW, spustil jsem následující bez chyby v mé místní testovací databázi na 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 ;