2015-02-02 2 views
0

Как OR используется в IF THEN ELSE END IF внутри хранимой процедуры MySql?MySql, используя ИЛИ в ЕСЛИ ЕСЛИ ЕСЛИ КОНЕЦ ЕСЛИ В хранимой процедуре

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. Как я понял?

ответ

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; 
+0

Ударьте мне это :) –

+0

Спасибо за это. И спасибо за вторую версию тоже. Делает вещи намного проще. – Norman

1

Попробуйте изменить ваш «Или» s к «и» s

В настоящее время ваш запрос всегда будет давать UserKey = ложь, как MakeKey всегда будет не быть одним этих значений.