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