2017-10-29 29 views
0

CREATE FUNCTIONのコードをデバッグできません。次のエラーが表示されます。MySQL ERROR 1064 in CREATE FUNCTION

ERROR 1064 (42000): 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 16

これはコードです。

DELIMITER $$ 
CREATE FUNCTION CHECK_STATUS(SAL FLOAT) RETURNS VARCHAR(10) 
DETERMINISTIC 
BEGIN 
    DECLARE STATUS VARCHAR(10); 
    SET STATUS = ""; 
    IF (SAL > 70000) THEN 
    SET STATUS = "A CLASS"; 
    ELSEIF (SAL > 50000) THEN 
    SET STATUS = "B CLASS"; 
    ELSE IF (SAL > 30000) THEN 
    SET STATUS = "C CLASS"; 
    ELSE 
    SET STATUS = "D CLASS"; 
    END IF; 
RETURN STATUS; # This is line 16 
END; 
$$ 

PS:私は、同じタイトルの他の質問を見てきましたが、彼らはDELIMITERについてだったので、彼らは助けにはなりませんでした。 私のMySQLのバージョンは5.7.19

+0

私が読んだことは、最後の2行がEND $$になってから、DELIMITERをリセットするための新しい行になっている可能性があります。 DELIMITER; - これはテストされていません。 – TimBrownlaw

答えて

2

あなたはELSEIFELSE IFを変更する場合、それは動作しますです。 ELSEとして扱われ、その後が付いていないIF句は未処理です。

+0

OPの例に上記のそれぞれの1つがあることを見ただけです。 – TimBrownlaw

+0

それはうまくいきました。しかし、なぜそれが「16行目のエラー」と言っていたのでしょうか。 @Michael O. –

+1

@NikhilWagh関数の終わりまで、非閉じのIF句(ELSE IFの一部)があったからです。 –