2013-03-21 161 views
1

我需要MySQL的功能,但提供了相同的值,每次
这个MySQL的功能给我相同的值每一次即S_Start_ToBeStarted(1如果value)的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

空没有按” t与=!=运算符配合良好,foobar=NULL的结果为NULL(未知),不是true或false。使用IS NULLIS NOT NULL代替