私は、ストアドプロシージャに含めるwhere句を生成することによってデータベースを検索できるasp.netページを用意しています。問題は、この手順では、さまざまな条件に対して不明な数のパラメータを許可する必要があるということです。非常に単純化された例は、次のようになります。SQLのパラメータに制限のない動的なユーザー生成クエリの作成
SELECT [Column1] FROM [TableName] WHERE 1=1
--Everything below user generated
AND
(
([Column2] = '1' AND [Column3] = '5' AND [Column4] = '9') OR
([Column2] = '2' AND [Column3] = '6' AND [Column4] = '8') OR
...
([Column2] = '25' AND [Column3] = '3' AND [Column4] = '1')
)
AND [Column5] BETWEEN '10' AND '200'
私はこのための最良のソリューションが何であるか疑問に思っていました。私は、文字列としてwhere句を作成し、それをストアドプロシージャに1つの大きなパラメータとして渡し、動的SQLとしてロットを実行できることを知っていますが、よりよい解決策は何ですか?
LINQを見るのはいかがですか? –
もしそれが本当に動的であれば、ストアド・プロシージャなしの動的SQLだけで簡単に行うことはできませんか? –
@JamesZこのクエリの部分は、他のいくつかの場所で参照されるはるかに大きな既存のストアドプロシージャの一部です。 – wheresmyducky