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 回答