2012-06-24 75 views
1

我有用於選擇行的存儲過程。我想一個參數傳遞到動態過濾行是這樣的:動態TSQL中的WHERE子句並阻止SQL注入

Create Procedure CustomerSelectAll 
    @FilterExpresion NVARCHAR(MAX) 

DECLARE @CMD NVARCHAR(MAX) 

SET @CMD = N'SELECT * FROM dbo.Customers '[email protected]; 

EXEC(@CMD) 

上面的代碼工作正常,但它是在對SQL注入風險,所以我希望能夠通過多個列與任何WHERE語句,如:

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

過濾表達式來自哪裏? – Joe

回答

0

我不知道,如果你可以通過整個從哪裏知道的很少量我子句parameter.But,我可以建議你使用一個sql parser,看是否where子句剛剛select語句如果答案是肯定的,那麼你可以將where子句傳遞給你的存儲過程。希望這個對你有幫助。