2013-03-21 4 views
1

Я нуждается в функции тузд, но дает то же значение каждый раз, когда
эта функция MySQL дает мне такое же значение каждый раз, т.е. S_Start_ToBeStarted (Значение 1 If)Mysql Функция, возвращающая же значение

-- colorA 
DELIMITER $$ 
DROP FUNCTION IF EXISTS `colorA`$$ 
CREATE FUNCTION `colorA`( 
    Appf VARCHAR(3), 
    Start_Datef DATETIME, 
    PDCf DATETIME 
    ) RETURNS INT 
    DETERMINISTIC 
BEGIN 
DECLARE finalcolor INT DEFAULT 0; 
IF Appf = 'Yes' & IFNULL(Start_Datef, 'NULL' = 'NULL' & sysdate() <= PDCf 
    THEN SET finalcolor = (SELECT `PP_Colors`.`S_Start_ToBeStarted` FROM `SCR_Sap`.`PP_Colors` LIMIT 1); 

ELSE IF Appf = 'Yes' & IFNULL(Start_Datef, 'NULL') = 'NULL' & sysdate() > PDCf 
    THEN SET finalcolor = (SELECT `PP_Colors`.`S_Start_Error` FROM `SCR_Sap`.`PP_Colors` LIMIT 1); 

ELSE IF Appf = 'Yes' & IFNULL(Start_Datef, 'NULL') != 'NULL' & sysdate() <= PDCf 
    THEN SET finalcolor = (SELECT `PP_Colors`.`S_Start_Ok` FROM `SCR_Sap`.`PP_Colors` LIMIT 1); 

ELSE IF Appf = 'Yes' & IFNULL(Start_Datef, 'NULL') != 'NULL' & sysdate() > PDCf 
    THEN SET finalcolor = (SELECT `PP_Colors`.`S_Start_LateStarted` FROM `SCR_Sap`.`PP_Colors` LIMIT 1); 

ELSE SET finalcolor = (SELECT `PP_Colors`.`S_NotApplicable` FROM `SCR_Sap`.`PP_Colors` LIMIT 1); 

END IF; 
END IF; 
END IF; 
END IF; 
    RETURN finalcolor; 
    END$$ 
DELIMITER ; 

ответ

1

Null Безразлично» t работает хорошо с операторами = и !=, результат foobar=NULL NULL (неизвестно) не является истинным или ложным. Использовать IS NULL и IS NOT NULL вместо

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