我在使用以下代码在cpanel中创建mysql函数时一直收到错误。 但是在SQL Manger 2007中创建mysql函数时,下面的代码正常运行。 任何人都告诉我这个cpanel代码有什么问题。
错误: - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第12行的''附近使用正确的语法 (0.81秒)
CREATE FUNCTION F_test (topsbwynum INTEGER)
RETURNS float(20,2)
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
BEGIN
DECLARE FinalPrice VARCHAR(20);
DECLARE err VARCHAR(20);
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err = 1;
IF(sbwynum > 0)THEN
IF(FinalPrice > 0)THEN
RETURN FinalPrice;
ELSEIF(adjprice > 0)THEN
RETURN adjprice;
ELSEIF(price > 0)THEN
RETURN price;
ELSEIF(estprice > 0)THEN
RETURN estprice;
ELSE
RETURN 0;
END IF;
ELSE
RETURN 0;
END IF;
END;
非常感谢。
答案 0 :(得分:0)
对于多行语句,您不能使用相同的字符(默认情况下为“;”)来分隔函数定义和整个CREATE
语句中的各个语句。如果您尝试,创建语句将在第一个“;”结束(在示例代码中,它位于第一个DECLARE
之后)。由于语句语法错误位于截断语句的末尾,因此错误消息将''作为发生错误的语句的一部分。
从命令行客户端,您可以使用delimiter
命令将客户端使用的分隔符更改为(例如)“;;”,然后使用此分隔符结束创建语句:
delimiter ;;
CREATE FUNCTION F_test (topsbwynum INTEGER)
...
END;;
delimiter ;
在phpMyAdmin中,有一个“分隔符”字段可以实现相同的目的。