2016-09-22 2 views
0

좋은 날, 그래서 나는이 함수를 검사하여 if 함수를 사용하여 일부 데이터를 연결하고 빼기위한 코드를 작성하려고 노력해 왔습니다. 인터넷에서 예제 구문을 반복해서 읽으려고 노력했지만 코드가 잘못되었음을 발견 한 것 같습니다!Mysql 함수 코딩

내가 한 heres는 무엇을 :

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 서버 버전에 해당하는 설명서를 확인하십시오.

그래서 정확히 무엇이 잘못 되었습니까? 내가 뭘하려고 오전

은 다음과 같습니다

이 기능을 사용하여 입력 번호를와 연결된 문자열을 반환합니다.

내 공식은 다음과 같습니다

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

답변을 주셔서 대단히 감사합니다. –