我正在关注有关mysql函数创建的一些教程,但我不断收到以下错误。
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近''第5行:
CREATE FUNCTION getstatisticscount (h VARCHAR(35),d date)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE tel INT;
SELECT count(hash) into tel from statsitieken where hash=h and lastvisit between concat(d,' 00:00:00') and concat(d,' 23:59:59') group by hash;
RETURN tel;
END;
我可以为我的生活找不到第5行的位置,但无论我把它放在哪一行,我都会遇到这个错误。 如果我从sql小提琴代码中删除此功能,那就没关系了。 我找不到它有什么问题...除了可能有缺陷的教程。
答案 0 :(得分:2)
使用分隔符
delimiter //
CREATE FUNCTION getstatistics(h VARCHAR(35),d date)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE tel INT;
SELECT count(hash) INTO tel
FROM statistics
WHERE
hash=h
AND lastvisit BETWEEN concat(d,' 00:00:00') AND concat(d,' 23:59:59')
GROUP BY hash;
RETURN tel;
END
//
DELIMITER ;
了解更多信息:http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html
编辑:基本上,因为你的存储过程用分号(;)分隔语句,并且定义你的过程的方法也使用分号来分隔语句,所以MySQL很难找出你的程序开始和结束的位置。 我还编辑了上面的SQL语句,将分隔符返回到默认分号。