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 将始终不是这些值之一。
如何在 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 将始终不是这些值之一。