0

私のasp.netプロジェクトでは、C#のサーバー側フィルター関数がSQLWHERE句を作成し、それをSQLストアドプロシージャに渡すインスタンスがあります。たとえば、

フィルターは、「<code>WHERE Qty < 5 AND Price > 10」のような値を持つ文字列変数を生成します。

ストアド プロシージャの関連部分は次のようになります。

Exec (‘
    Select Name, Location
    From Users
    + ‘@passedInWhereClause’
‘)

ご覧のとおり、サーバー側で C# コードによって生成されEXECた句を含む、渡された変数で構築された文字列に対してコマンドを実行する必要があります。. where_ EXEC_ EXECこれを行うより良い方法はありますか?

4

2 に答える 2

1

オプションのパラメーターを検討する必要があります。例

WHERE (@Type = NULL OR @Type = '' OR @Type = Type)

これにより、NULL または空白を SP に渡して where 句を無視したり、値を渡して where 句を適用したりできます。

于 2012-05-01T22:00:24.957 に答える
0

いいえ、実行する動的 SQL を構築しているため、これを行うより良い方法はありません。

もっとうまくやりたい場合は、動的 SQL を実行しないでください。

動的 SQL の呪いと祝福

于 2012-05-01T22:02:01.217 に答える