2016-10-17 8 views
1

я хочу, чтобы моя функция возвращала "INC", если положить "INC" в функции параметровMySQL Функция IF() не возвращает значение, которое я декларировать

SELECT getEquivalentGrade('INC'); 

Выход: INC

DELIMITER $$ 

USE `nmsc_scholarship_db`$$ 

DROP FUNCTION IF EXISTS `getEquivalentGrade`$$ 

CREATE DEFINER =`root`@`localhost` FUNCTION `getEquivalentGrade`(grade CHAR(5)) 
    RETURNS CHAR(5) 
    CHARSET latin1 
    BEGIN 
    DECLARE equivalent_grade CHAR(5); 

    IF (grade > 100) 
    THEN 
     SET equivalent_grade = '1'; 

    ELSEIF (grade < 69) 
     THEN 
     SET equivalent_grade = '5'; 

    ELSEIF (grade = 'INC') 
     THEN 
     SET equivalent_grade = grade; 

    ELSE 
     SET equivalent_grade = (SELECT equivalent_grade.`equivgrade` 
           FROM equivalent_grade 
           WHERE equivalent_grade.`fromgrade` <= grade AND equivalent_grade.`tograde` >= grade); 

    END IF; 
    RETURN equivalent_grade; 
    END$$ 

DELIMITER ; 

прямо сейчас , если я буду исполнять эту функцию, это то, что я получаю.

SELECT getEquivalentGrade('INC'); 

Выход: 5

+0

я просто уже решить. –

+0

Я положил elseif grade = 'inc', затем set equal_grade = grade; вперед до elseif grade <69 –

ответ

0

Вы должны переместить INC в ТОП

IF (grade='INC') THEN 
SET equivalent_grade = grade; 

ELSEIF (grade > 100) THEN 
SET equivalent_grade = '1'; 

ELSEIF (grade < 69) THEN 
SET equivalent_grade = '5'; 

ELSE 
SET equivalent_grade = (SELECT equivalent_grade.`equivgrade` FROM equivalent_grade WHERE equivalent_grade.`fromgrade`<= grade AND equivalent_grade.`tograde`>= grade); 

И вы должны исследовать, как IfElse работу. Состояние работает, как он остановится/Гото ENDIF .. IF ** условие верно было встретиться, или они будут продолжать находить до последней IF

Смежные вопросы