MySql 在存储过程中的 IF THEN END IF 中使用 OR

MySql using OR in an IF THEN END IF inside a stored procedure

如何在 MySql 存储过程中的 IF THEN ELSE END IF 中使用 OR

DECLARE userKey BOOL;

SET userKey = True;

IF makeKey != 'open' or makeKey != 'mask' THEN
 SET userKey = False;
END IF;

IF (makeKey != 'open') or (makeKey != 'mask') THEN
 SET userKey = False;
END IF;

IF (makeKey != 'open') || (makeKey != 'mask') THEN
 SET userKey = False;
END IF;

Note: Not all the above are used together.

以上三个都不行。他们不会抛出错误,而只是评估为 false。

存储过程像往常一样被调用myProc('open')OR 我出错了。我该如何做对?

那是因为你想要AND,而不是OR:

IF makeKey != 'open' AND makeKey != 'mask' THEN
   SET userKey = False;
END IF;

OR 永远为真。比如makekey = 'open',那么肯定不等于'mask'.

这更容易写成:

IF makeKey NOT IN ('open', 'mask') THEN
    SET userKey = False;
END IF;

尝试将 "Or"s 更改为 "and"s

目前您的查询将始终给出 UserKey = false,因为 MakeKey 将始终不是这些值之一。