mySql过程条件不会发生

时间:2016-11-03 15:10:41

标签: mysql stored-procedures

我在MySql中有以下存储过程..

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

当我使用不正确的用户名测试此过程时,我希望它“离开主要”但是即使我这样做它仍然没有进入LEAVE main,我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

null值不等于任何值,因此两个比较都将返回false。使用is null运算符或<=>运算符将变量与null进行比较。

user_name IS NULL