2017-12-06 8 views
0

次のsql関数では、ネストされたif-elseステートメントを使用しようとしています。ネストされたif-elseステートメントのSQL構文エラー[mysql]

この関数は、ネストされた '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 = 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 

コードが正常であるようです。私は間違ったことをうまくいかない。 何か助けていただければ幸いです。ありがとう。

+0

MySQLは言った:私はこの問題は、あなたが変数のインクリメントしようとしている方法だと思います。#1064 - あなたのSQL構文でエラーが発生しています。右側の – Azima

答えて

1

MySQLでネストされたIFステートメントを持つことには何も問題ありません。

SET daysEntitled += 1.00; 
       ^^ not allowed 

使用、代わりにこのコード:

IF dayOfMonth <= 15 THEN 
    SET daysEntitled = daysEntitled + 1.00; 
ENDIF; 
+0

オハイオ州のあなたのMariaDBサーバーのバージョンに対応するマニュアルを確認してください..私は参照してください...助けを感謝:) – Azima

関連する問題