在使用以下代码在 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;
非常感谢。
最佳答案
对于多行语句,您不能使用相同的字符(“;”,默认情况下)来分隔函数定义和整个 CREATE
语句中的各个语句。如果您尝试,创建语句将在第一个“;”处结束(在示例代码中,它位于第一个 DECLARE
之后)。由于语句语法错误位于截断语句的末尾,因此错误消息将 '' 作为语句中发生错误的部分。
从命令行客户端,您将使用 delimiter
命令将客户端使用的分隔符更改为(例如)“;;”,然后使用此分隔符结束创建语句:
delimiter ;;
CREATE FUNCTION F_test (topsbwynum INTEGER)
...
END;;
delimiter ;
在 phpMyAdmin 中,有一个“分隔符”字段可以实现相同的目的。
关于在 cPanel 中使用 CREATE FUNCTION 的 MySQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5946332/