2017-12-12 9 views
-1

ブロック内の複数のOR条件をチェックしようとしていますが、GUIDStatementが 'ContactDetailsGUID'または 'FILECONTENTSGUID'または 'AccountGUID'の場合でもブロックが実行されます。複数のSQLストアドプロシージャ内の条件

私は、GuidStatement変数に単一の値を割り当て続けているカーソルを持っています。ですから、与えられた時点で私の@GUIDStatements変数は単一の名前を持ちます 私のGUIDStatementが上記の値のいずれかを持っている場合、私の条件は実行されません。

私の条件は以下の通りです。助けてください。

IF ((@GUIDStatements <> 'ContactDetailsGUID') OR (@GUIDStatements <> 'FILECONTENTSGUID') OR (@GUIDStatements <> 'AccountGUID')) 
+1

_「動作していません」_は問題の説明ではありません。何が起こった?それはなぜあなたが望むものではなかったのですか?どのデータを入力していますか、どのデータを取り出したいのですか?代わりに何が起こるのですか?あなたは、人々が答えるための質問であるために、そこに十分な情報を提供していませんでした。 –

+0

nullでない '@ GUIDStatements'の場合、その条件は常にtrueです。 – GSerg

+0

質問が更新されました。 @GUIDstatementsは異なるGUID名を取得し続けます。 – Abhijit

答えて

2

以下のコードを実行してください。あなたのコードの最初のコードブロックは、@ GUIDStatementsの値にかかわらずfalseを返します。 2番目のブロックであるsuggestionは、@ GUIDStatementsが3つの値のいずれかにある場合はfalseを返し、そうでない場合はtrueを返します。私はあなたの質問を理解しているように、あなたが探しているものだと思います。コメントしないと、私は明確にしようとします。

DECLARE @GUIDStatements SYSNAME = N'not'; 

-- 
-- your code 
------------------------------------------------- 
IF (
    (
     @GUIDStatements <> 'ContactDetailsGUID' 
    ) 
    OR 
    (
     @GUIDStatements <> 'FILECONTENTSGUID' 
    ) 
    OR 
    (
     @GUIDStatements <> 'AccountGUID' 
    ) 
    ) 
    SELECT N'false' 
ELSE 
    SELECT N'true'; 

-- 
-- suggestion 
------------------------------------------------- 
IF @GUIDStatements IN ('ContactDetailsGUID', 'FILECONTENTSGUID', 'AccountGUID') 
    SELECT N'false' 
ELSE 
    SELECT N'true'; 
+0

ありがとうございます。それは正常に動作します – Abhijit

0

方法について:

IF @GUIDStatements NOT IN ('ContactDetailsGUID', 'FILECONTENTSGUID', 'AccountGUID') 

あまりにも保守が容易。

関連する問題