2010-05-18 37 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

所以,如果(!)以上的作品,什麼不是?什麼樣的任務不起作用? – Unreason 2010-05-18 09:28:20

回答

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

「你需要使用你發佈的代碼」手段? – 2010-05-18 09:29:24

0

不能使用存在如您檢索數據(@PK_LOGIN_ID),所以你需要選擇它。

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

RETURN ISNULL(@PK_LOGIN_ID, 0) 

(假設1或0匹配的行只)

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

歡迎來到Stack Overflow!請不要僅發佈一段代碼,請解釋爲什麼此代碼可解決問題。沒有解釋,這不是一個答案。 – Artemix 2012-11-23 11:16:32

相關問題