2012-02-10 60 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