2017-03-08 13 views
0

のブロックIは、明らかに、以下のストアドプロシージャELSE IFでどこSQLクエリ

CREATE PROCEDURE sp1 
(
    @param1 bit, 
    @parma2 bit 
) 
AS 
BEGIN 

    SELECT * from Table1 where 
    if @param1 = 1 then column1 is null 
    else if @parma2 = 1 then column1 is not null 

END 

節が正しくありませんであれば、他の部分を持っています。誰もそれに取り組む方法を提案できますか?このような

答えて

0

何か:

SELECT * from Table1 where 
    case 
     when @param1 = 1 then [column 1] is null 
     when @param2 = 1 then [column 1] is not null 
end 

しかし、あなたは、この手順のための2つのパラメータを必要としない、一つだけで十分です。

0

使用この:

CASE WHEN condition THEN value ELSE value END 
0

次のことを試してください:のparam1 = 1場合は、上記の文はnullにcolumn1のを設定します

SELECT 
Case WHEN @param1 = 1 THEN Null 
Case WHEN @param2 = 1 THEN column1 Else '' End as column1 , 
* FROM Table1 

PARAM2 = 1ならば、それはCOLUMN1の値を取得しますそれ以外の場合は空の文字列に設定します。

0

最も簡単なオプションはANDORを用いることであろうように私には思える:

SELECT * 
FROM Table1 
WHERE (@param1 = 1 AND column1 is null) 
OR (@parma2 = 1 AND column1 is not null)