私はいくつかのフィールドを持つテーブルを持っています。私は、ユーザーが1つまたはフィールドの組み合わせで検索できるように、asp.netで検索フィルターを作成しようとしています。だから、基本的に私は4つのparamsにかかる単一のストアドプロシージャを作成したいとそのnullではない...SQLフィルタクエリ
TableExampleは4列、のCol1 Col2にCOL3 COL4
Iを持っている場合には、WHERE句にPARAMを追加します可能な組み合わせごとに1つ作成するのではなく、1つのストアドプロシージャでこれを行う方法があることを望んでいます。
私はこのようなものを試していましたが、それは正しくありませんでしたが、これまでに何が得られましたか。
感謝!
CREATE PROCEDURE [dbo].[Search]
@Col1 int,
@Col2 int,
@Col3 int,
@Col4 int
AS
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SELECT *
FROM
[dbo].[TestTable]
WHERE
1=1
CASE
WHEN @Col1 IN NOT NULL
THEN AND [Col1] = @Col1
WHEN @Col2 IN NOT NULL
THEN AND [Col2] = @Col2
WHEN @Col3 IN NOT NULL
THEN AND [Col3] = @Col3
WHEN @Col4 IN NOT NULL
THEN AND [Col4] = @Col4
END
のでいただきましたが、ちょうどC#でコード側のクエリ文字列を構築するために良いことは、代わりにストアドプロシージャのビルドを持ってしようとしているのクエリは、動的に合意されないされています?格納されたprocメソッドでいくつかの落とし穴があるようです... – Gabe