2012-09-26 4 views
4

12 번째 줄에 오류가 있습니다 (endif 문에서). 나는 IF 또는 ELSE 내에서 뭔가 잘못하고 있다고 믿습니다. 아무도 도와 줄 수 있습니까?MySQL 저장 함수의 IF 문이 잘못되었습니다.

DELIMITER $$ 

CREATE FUNCTION TEST (`param` INT) 
RETURNS INT 
DETERMINISTIC 
BEGIN 
    DECLARE `var` INT; 

    SET `var` = 1; 

    IF `param` > 0 THEN 
     SET `var` = `var` + `param`; 
    END IF; 

    RETURN `var`; 
END$$ 

편집 : (대신 만약의 경우와 동일한 기능, 동일한 문제가)

DELIMITER $$ 

CREATE FUNCTION TEST (`param` INT) 
RETURNS INT 
DETERMINISTIC 
BEGIN 
    DECLARE `var` INT; 

    SET `var` = 1; 

    SET `var` = 
     CASE 
      WHEN `param` > 0 THEN `var` + `param` ELSE `var` 
     END ; 

    RETURN `var`; 
END$$ 
+0

'if-else'조건부에서'set' 문을 사용할 수 있습니까? – SexyBeast

+0

@Cupidvogel : 가능합니다. http://dev.mysql.com/doc/refman/5.5/en/if.html – gbn

+2

여기에 당신의 요점은 무엇입니까 :'SET var = var;'? –

답변

7

대신을 시도해보십시오

BEGIN 
    DECLARE `var` INT; 

    SET var = 
     CASE 
     WHEN param > 0 THEN var + 1 ELSE var 
     END ; 

    RETURN var; 
END$$ 
+1

'+ 1'은 대소 문자를 사용합니다. : D 그런데'var'의 값을'var'에서 설정해야하는 이유는 무엇입니까? –

+1

@ 존 휴 나는 mysql 문법에 익숙하지 않지만, 왜 이런 식으로''''내 눈을 아프게하고있다. –

+0

아니, 그게 무슨 뜻인지 아니야. 가능하면'SET var = 매개 변수가 0보다 큰 경우 var + 1 END;'? –

1

그것은 phpMyAdmin을 버그했다 밖으로 발견 나는 경우 '추가 루틴'기능을 추가했습니다!