我的问题很基本。
我正在创建一个存储过程并拥有以下变量:
@ConcatenarClausulaWhere
在执行过程期间,在WHERE之后插入此变量中的几个条件:
SELECT ID
FROM TABLE1
WHERE indStatus = 'True'
AND (Description LIKE '%' + @ STRING + '%')
我的目的是做一些事情:
SELECT ID
FROM TABLE1 The
WHERE indStatus = 'True'
AND (Description LIKE '%' + @ STRING + '%') + @ ConcatenarClausulaWhere
但是,这是不可能的。为什么呢?
我正在使用SQL Server 2008
答案 0 :(得分:3)
您需要动态SQL将WHERE
子句附加到查询中。 SELECT
语句不仅仅是一个字符串。你还需要在这里非常警惕SQL注入。您如何验证用户输入此where子句参数的内容?
DECLARE @sql NVARCHAR(MAX) = N'SELECT ID FROM dbo.TABLE1
WHERE indStatus = ''True'' AND (Description LIKE @String)'
+ @ConcatenarClausulaWhere;
EXEC sp_executesql @sql, N'@String NVARCHAR(MAX)', N'%' + @STRING + '%';