2012-02-10 63 views
1

這是什麼問題?Sql Server如果條件白選擇

DECLARE @error int 

    If (SELECT ID_Projet FROM tblProjet WHERE [email protected]_Projet)> 0 
    SET @error=1 
    END IF 
+3

它是什麼應該做?你試圖測試是否存在匹配行的'0'或測試'ID_Projet'值是否爲'> 0'? – 2012-02-10 16:45:02

+0

您是否收到錯誤?它是什麼? – Curt 2012-02-10 16:45:25

+0

錯誤是什麼? – Diego 2012-02-10 16:45:30

回答

6

END IF不正確。

做這樣的:

DECLARE @error int 

    If (SELECT ID_Projet FROM tblProjet WHERE [email protected]_Projet)> 0 
    SET @error=1 

或本:

DECLARE @error int 

    If (SELECT ID_Projet FROM tblProjet WHERE [email protected]_Projet)> 0 
    Begin 
    SET @error=1 
    End 

檢查HERE的文檔。


如果你想看到該限制的行數,你應該做這樣的:

DECLARE @error int 

    If (SELECT count(ID_Projet) FROM tblProjet WHERE [email protected]_Projet)> 0 
    Begin 
    SET @error=1 
    End 
+1

+1正確的答案,如果我可以另一個+ +因爲打字速度比我快! – GarethD 2012-02-10 16:48:24

+1

非常感謝你! – FrankSharp 2012-02-10 16:59:47

+1

如果您只是檢查條件是否滿足,那麼它應該使用IF EXISTS,因爲表掃描僅進行第一次匹配,而不是全表掃描來計數記錄。 – GarethD 2012-02-10 17:11:10

3

END IF不是條件語句的T-SQL語法。

DECLARE @error int 

IF (SELECT COUNT(ID_Projet) FROM tblProjet WHERE [email protected]_Projet)> 0 
    BEGIN 
    SET @error=1 
    END 

編輯:

由於這是隻檢查至少一排,你應該使用EXISTS功能,而不是COUNT。這是更有效,如果ID_Project爲空,你將需要進一步增加WHERE子句EXISTS的查詢增加「並ID_Projet IS NOT NULL」因爲COUNT(NULL)= 0

DECLARE @error int 

IF EXISTS(SELECT ID_Projet FROM tblProjet WHERE [email protected]_Projet) 
    BEGIN 
    SET @error=1 
    END