2010-05-18 3 views
2

쿼리에 EXISTS 값을 할당 할 수 있습니까? 현재 그것은 저에게 오류를주고 있습니다 '=' 근처의 구문이 잘못되었습니다. 그러나이 쿼리를 사용하면 예상대로 실행됩니다.SQL 쿼리에 EXISTS 키워드를 사용하여 결과를 할당 할 수 있습니까?

IF EXISTS (SELECT @PK_LOGIN_ID=PK_LOGIN_ID FROM dbo.M_LOGIN 
    WHERE [email protected]_NAME AND [email protected] AND [email protected]_ROLE_ID) 
      RETURN @PK_LOGIN_ID 
    ELSE 
      RETURN 0 
+0

그래서, (!) 위의 작품, 무엇을하지 아닌 경우 (이 1 또는 0 일치하는 행만을 가정)? 어떤 종류의 임무가 효과가 없습니까? – Unreason

답변

2
RETURN COALESCE(
     (
     SELECT TOP 1 
       PK_LOGIN_ID 
     FROM dbo.M_LOGIN 
     WHERE LOGIN_NAME = @LOGIN_NAME 
       AND PASSWORD = @PASSWORD 
       AND FK_ROLE_ID = @FK_ROLE_ID 
     ), 0) 
1

아니요. 게시 한 코드를 사용해야합니다.

+0

"게시 한 코드를 사용해야합니다. –

1

EXISTS 절에 변수를 할당 할 수 없습니다.
하나의 옵션은 과제를 나누고 과제를 확인하거나 과제를 모두 제거하는 것입니다. 당신은 데이터 (@PK_LOGIN_ID를) 검색 그래서 당신이 그것을 선택해야합니다으로

SQL 문 당신은 사용할 수 없습니다

IF EXISTS (
    SELECT PK_LOGIN_ID 
    FROM dbo.M_LOGIN 
    WHERE [email protected]_NAME 
      AND [email protected] 
      AND [email protected]_ROLE_ID) 
    SELECT @PK_LOGIN_ID = PK_LOGIN_ID 
    FROM dbo.M_LOGIN 
    WHERE [email protected]_NAME 
      AND [email protected] 
      AND [email protected]_ROLE_ID 
    ELSE 
    SET @PK_LOGIN_ID = 0 

RETURN @PK_LOGIN_ID 
1
IF EXISTS (
    SELECT PK_LOGIN_ID 
    FROM dbo.M_LOGIN 
    WHERE [email protected]_NAME 
      AND [email protected] 
      AND [email protected]_ROLE_ID) 
    SELECT @PK_LOGIN_ID = PK_LOGIN_ID 
    FROM dbo.M_LOGIN 
    WHERE [email protected]_NAME 
      AND [email protected] 
      AND [email protected]_ROLE_ID 
    ELSE 
    SET @PK_LOGIN_ID = 0 

RETURN @PK_LOGIN_ID 
+0

스택 오버플로에 오신 것을 환영합니다! 코드 블록을 게시하는 것보다이 코드가 문제를 해결하는 이유를 설명하십시오. 설명이 없으면 이것은 대답이 아닙니다. – Artemix

관련 문제