2016-09-22 49 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

非常感谢你的回答,我不相信我错过了。 –