END
の後にセミコロンを削除します 。
...
END
|
DELIMITER ;
コメントを再確認してください。新しい区切り文字を宣言するときに、現在の区切り文字を使用することはできません。紛らわしいように聞こえますが、これを行うかどうかを検討してください:
DELIMITER |;
これで、MySQLは区切り文字が「|;」であると見なします。 (2つの文字、パイプとセミコロン)。考えてみれば、DELIMITER
必須 MySQLクライアントによって特別な方法で扱われます。 できない唯一のステートメントです その後に現在の区切り文字が続きます。
したがって、区切り文字をパイプに設定するときは、次のようにします。
DELIMITER |
セミコロンに戻すときは、次のようにします。
DELIMITER ;
FWIW、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 ;