2016-09-22 51 views
0

美好的一天, 所以我一直在試圖編寫我的這個函數,允許我使用if函數檢查並扣除一些數據。 我一直試圖從互聯網上反覆閱讀示例語法,但我似乎無法找到我的代碼有什麼問題!Mysql函數編碼

繼承人我所做的:

DELIMITER $$ 

USE `db`$$ 

DROP FUNCTION IF EXISTS `convertToRelatives`$$ 

CREATE DEFINER=`root`@`localhost` FUNCTION `BaseConverter`(n INT) RETURNS VARCHAR(100) CHARSET latin1 
BEGIN 
    DECLARE s VARCHAR (100); 

    IF n - 32 >= 0 
    THEN SET s = 'Father' 
    AND n = n - 32; 
    IF n - 16 >= 0 
    THEN SET s = CONCAT(s, ', ', 'Mother') 
    AND n = n - 16; 

    END IF; 
    RETURN s; 
END$$ 

DELIMITER ; 

和進出口收到此錯誤:

錯誤代碼:1064 您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在第13行的''附近使用正確的語法。

so ..究竟是什麼錯誤?

什麼,我試圖做的是:

使用函數獲取輸入號碼,並返回一個連接字符串。

我的公式是:

if n-32 >=0 then s = 'father' 
if n-16 >=0 then s = CONCAT(s,',','Mother') 
if n-8 >=0 then s = CONCAT(s,',','Brother') 
if n-4 >=0 then s = CONCAT(s,',','Sister') 
if n-2 >=0 then s = CONCAT(s,',','Others') 

幫助?

回答

0

AND n = n - 32;引起該問題。它應該是

IF n - 32 >= 0 THEN 
    BEGIN 
    SET s = 'Father'; 
    SET n = n - 32; 
    END; 
ELSEIF n - 16 >= 0 THEN 
BEGIN 
    SET s = CONCAT(s, ', ', 'Mother'); 
    SET n = n - 16; 
END; 
END IF; 
+0

仍然會出現這些空白錯誤。編輯:將再次嘗試.. –

+0

@ jamescastillo,請參閱答案中的更新。您還必須更正其他if語句。 – Rahul

+0

非常感謝你的回答,我不相信我錯過了。 –