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

时间:2015-02-02 15:49:47

标签: mysql sql stored-procedures

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

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.

上述三项都不奏效。他们不会抛出错误,只是评估为假。

存储过程与通常myProc('open')一样调用;我OR出了问题。我该如何做到正确?

2 个答案:

答案 0 :(得分:1)

这是因为您需要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;

答案 1 :(得分:1)

尝试将您的"或"更改为"和" s

目前,您的查询将始终提供UserKey = false,因为MakeKey始终不是其中一个值。