1

行を選択するためのストアド プロシージャがあります。次のように動的に行をフィルタリングするためにパラメータを渡したい:

Create Procedure CustomerSelectAll
   @FilterExpresion NVARCHAR(MAX)

DECLARE @CMD NVARCHAR(MAX)

SET @CMD = N'SELECT * FROM dbo.Customers '+@FilterExpresion;

EXEC(@CMD)

上記のコードは問題なく動作しますが、SQL インジェクションのリスクがあるため、次のような WHERE ステートメントで複数の列を渡すことができるようにしたいと考えています。

exec CustomerSelectAll
   @FilterExpresion = N' where Name = 'abc' and family = ''xyz'''
4

1 に答える 1

0

where句全体をパラメータとして渡すことができるかどうかはわかりませんが、私が持っている知識がほとんどないため、sqlパーサーを使用して、where句にselectステートメントだけが含まれているかどうか、および答えが肯定的であるかどうかを確認することをお勧めします。 where 句をストアド プロシージャに渡すことができます。これが役立つことを願っています。

于 2012-06-24T16:49:25.047 に答える