2012-02-10 13 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'ですか? –

+0

あなたにエラーが発生しましたか?それは何ですか? – Curt

+0

エラーは何ですか? – Diego

答えて

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

+1

ありがとうございます。 – FrankSharp

+1

条件が満たされているかどうかだけを確認している場合は、IF EXISTSを使用する必要があります。テーブルスキャンは、レコードをカウントするためのフルテーブルスキャンではなく最初の一致になります。 – GarethD

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 

EDIT:

これはあなただけではなくCOUNTよりも機能をEXISTS使用する必要があり、少なくとも一つの行をチェックしているので。 ID_Projectは、あなたがに句を追加するためにクエリをEXISTS「AND ID_ProjetがNULLでない」COUNTので、WHEREさらに追加する必要がありますNULL可能である場合、これは、はるかに効率的である(NULL)=それが想定している何0

DECLARE @error int 

IF EXISTS(SELECT ID_Projet FROM tblProjet WHERE [email protected]_Projet) 
    BEGIN 
    SET @error=1 
    END 
関連する問題