2015-02-02 2 views
0

OR은 MySql 저장 프로 시저 내에서 IF THEN ELSE END IF에 어떻게 사용됩니까?MySql은 저장 프로 시저 내부에서 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을 원하기 때문에입니다

답변

1

하지 OR :

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

OR은 항상 true가됩니다. 예를 들어 makekey = 'open' 인 경우에는 확실히 'mask'과 같지 않습니다.

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

나를 이길 : –

+0

고마워. 그리고 두 번째 버전에도 감사드립니다. 물건을 훨씬 쉽게 만듭니다. – Norman

1

이 UserKey는 = MakeKey 거짓 항상 하나가되지 않습니다

는 현재 쿼리가 항상 줄 것이다 "또는"s의 "와"의 변경 시도 :

더 쉽게로 작성 그 값들 중.