2016-08-05 5 views
0

아래 코드를 잘못 입력하면 누구에게 알려주시겠습니까?SQL 구문이 아닌 경우

IF (SELECT T0.U_DestType FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6') 

BEGIN 
SELECT 'SHOW_ERROR' FOR BROWSE 
END 

그것은 오류없이 컴파일하지만합니다 (U_DestType 1,2 이외의 또는 6시 SHOW_ERROR를 선언)

많은 감사 예상 된 결과를 제공하지 않습니다.

답변

1

또한 대단히 감사합니다, 좋아요 이런 식으로

IF ((SELECT count(T0.U_DestType) FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4') NOT IN ('1','2','6'))==0) 

BEGIN 
SELECT 'SHOW_ERROR' FOR BROWSE 
END 
+0

이것은 실제로 더 잘 작동합니다. 고마워요 – coblenski

+0

@JohnCobby 대환영 –

4

사용 Exists

IF Exists 
(SELECT 1 FROM OCRD T0 INNER JOIN ODLN T1 ON T1.CardCode = T0.CardCode WHERE T1.DocEntry ='4' and T0.U_DestType NOT IN ('1','2','6')) 
Begin 
--some quwery 
End 

은 하나 개 이상의 값을 반환 할 수 있습니다 가입하고 쿼리가 실패하는 기회가있다.

+1

을 시도 카운트 기능 을 사용할 수 있습니다. – coblenski

+1

OP의 논리에 대해'exists'를 원한다고 생각하지만, 이것은'count()'를 사용하는 것보다 확실히 좋은 해결책입니다. –

+0

@ GordonLinoff : 맞습니다. 고맙습니다. – TheGameiswar