2012-09-26 4 views
4

Я получаю сообщение об ошибке в строке 12 (в инструкции endif). Я верю, что я что-то делаю неправильно в рамках IF или ELSE, может ли кто-нибудь мне помочь?Оператор IF в хранимой функции MySQL ошибочен

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$$ 

EDIT: (та же функция случае вместо если та же проблема)

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

Можете ли вы использовать выражения 'set' внутри' if-else' условные? – SexyBeast

+0

@ Купидогель: да, вы можете. 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

@JohnWoo Я не знакомый с синтаксисом mysql, но эти '' '' у меня болят мои глаза, поэтому я удалил его. –

+0

Нет, это не то, что я имею в виду. Может ли это 'SET var = CASE WHEN param> 0 THEN var + 1 END;'? –

1

Обнаруженные это была ошибка в PHPMyAdmin, если я добавлена ​​функция с «добавлением рутины», она сработала!