2016-11-03 15 views
0

Ich habe die folgende gespeicherte Prozedur in MySql ..mySql Verfahren Bedingung nicht occour nicht

main: BEGIN 
    DECLARE user_name VARCHAR(65); 
    DECLARE home_path VARCHAR(255); 
    DECLARE home_perm VARCHAR(10); 
    DECLARE num_posts, param_index INT(10); 

    SELECT `account`, `Posts` 
    INTO user_name, num_posts 
    FROM account_info 
    WHERE account = username_in AND password = password_in; 

    IF (user_name = NULL) OR (user_name != username_in) THEN 
    LEAVE main; 
    END IF; 

    SET home_perm = 'LRS'; 

    IF num_posts > 100 THEN 
    SET param_index = 1; 
    SET home_path = 'c:\\folder_1'; 
    ELSEIF num_posts > 200 THEN 
    SET param_index = 2; 
    SET home_path = 'c:\\folder_2'; 
    ELSE 
    SET param_index = 0; 
    SET home_path = 'c:\\folder_0'; 
    END IF; 

    SELECT home_path,home_perm,param_index; 

END 

Als ich dieses Verfahren mit einem Benutzernamen testen, die falsch ist, ich will es „main VERLASSEN“ aber selbst wenn ich tun dass es immer noch nicht in LEAVE main eingeht, was kann ich tun, um das zu beheben?

Antwort

0

null Wert entspricht nichts, daher werden beide Vergleiche false zurückgeben. Verwenden Sie entweder den Operator is null oder den Operator <=>, um eine Variable mit null zu vergleichen.

user_name IS NULL 
+0

Das hat besser funktioniert, Danke! – MTplus