这是我为练习目的而创建的一个简单函数。但收到给定的错误。
DELIMITER $$
CREATE FUNCTION Weighted_Average(n1 INT, n2 INT, n3 INT, n4 INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE avg INT;
SET avg = (n1 + n2 + n3*2 + n4*4)/8;
RETURN avg;
END;
DELIMITER $$
错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'n4 * 4)/ 8附近使用正确的语法;返回平均值;结束'第6行
我将它与这篇文章进行比较:
有经验的人可能会指出我的错误而我没有在哪里。我没有看到错误要求我查看的地方有什么问题。注意:我正在使用工作台。
答案 0 :(得分:0)
你确定你不是指以下,主要是它的底部吗?
DROP FUNCTION IF EXISTS Weighted_Average;
DELIMITER $$
CREATE FUNCTION Weighted_Average(n1 INT, n2 INT, n3 INT, n4 INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE avg INT;
SET avg = (n1 + n2 + n3*2 + n4*4)/8;
RETURN avg;
END;$$
DELIMITER ;
某些客户端环境需要DELIMITER
来描述块的开头和结尾,以及更改语句的行尾。
由于DELIMITER
默认为;
,我们知道如何使用它来结束sql行,并且从不考虑它。直到...
对于CREATE PROCEDURE
,FUNCTION
,EVENT
,TRIGGER
这样的专业块,需要有一些协议让客户端和服务器知道整体事情结束了。
因此,对于像MySQL Workbench等类似的客户端,我们使用DELIMITER
块。我们将其更改为有趣的顶部,代码照常,并按上面所示进行结束。将DELIMITER
设置回正常;
PHPMyAdmin不需要它们。对SqlFiddle
而言可能并非如此