在mysql中创建函数不起作用 - 错误1064

时间:2010-09-30 13:42:07

标签: mysql phpmyadmin mysql-error-1064 stored-functions

我通过phpMyAdmin尝试了这个例子 http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm

mysql> DELIMITER |
mysql>
 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 |

下一个声明给出了:

Error

SQL query:

CREATE FUNCTION WEIGHTED_AVERAGE(
n1 INT,
n2 INT,
n3 INT,
n4 INT
) RETURNS INT DETERMINISTIC BEGIN DECLARE avg INT;

MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 

1 个答案:

答案 0 :(得分:0)

如链接中所述:

As mentioned in the first stored procedures tutorial, we declare the "|" symbol as a delimiter, so that our function body can use ordinary ";" characters

您可以在不同的连续行上编写很多命令。但通常只有在满足'; '时才会执行孔语句 设置DELIMITER字符意味着MySQL应该等到关闭它,无论你是否使用'; ',然后才能解释分隔符之间的内容。