嵌套if else语句[mysql]上的SQL语法错误
我有一个下面的sql函数,我试图使用嵌套的if-else语句 删除嵌套的“if”语句后,函数工作正常。但添加后,将显示错误嵌套if else语句[mysql]上的SQL语法错误,mysql,sql,function,Mysql,Sql,Function,我有一个下面的sql函数,我试图使用嵌套的if-else语句 删除嵌套的“if”语句后,函数工作正常。但添加后,将显示错误 BEGIN DECLARE daysEntitled DECIMAL(4,2); DECLARE joinDate DATE; DECLARE dayOfMonth INT(4); SET joinDate = (SELECT join_date FROM users WHERE id = user); SET daysEntitled = TIMEST
BEGIN
DECLARE daysEntitled DECIMAL(4,2);
DECLARE joinDate DATE;
DECLARE dayOfMonth INT(4);
SET joinDate = (SELECT join_date FROM users WHERE id = user);
SET daysEntitled = TIMESTAMPDIFF(MONTH, joinDate, currentDate);
IF YEAR(joinDate) = YEAR(currentDate) THEN
SET currentDate = DATE_FORMAT(currentDate,'%Y-12-31');
SET daysEntitled = TIMESTAMPDIFF(MONTH, joinDate, currentDate);
SET dayOfMonth = CAST(DAY(joinDate) AS UNSIGNED);
****** On adding this block ********
IF dayOfMonth <= 15 THEN
SET daysEntitled += 1.00;
ENDIF;
****** On adding this block ********
ELSEIF YEAR(joinDate) < YEAR(currentDate) THEN
SET daysEntitled = 8.00;
ELSEIF YEAR(joinDate) > YEAR(currentDate) THEN
SET daysEntitled = 12.00;
ELSE
SET daysEntitled = 4.00;
END IF;
RETURN daysEntitled;
END
代码似乎很好。我不知道出了什么问题。
非常感谢您的帮助。谢谢。在MySQL中使用嵌套的IF语句没有什么错。我认为问题在于您试图增加变量的方式:
SET daysEntitled += 1.00;
^^ not allowed
请改用此代码:
IF dayOfMonth <= 15 THEN
SET daysEntitled = daysEntitled + 1.00;
ENDIF;
MySQL说:1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解正确的版本