0

我的问题是基本的。

我正在创建一个存储过程并让它具有以下变量:

@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

4

1 回答 1

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 + '%';
于 2013-04-18T18:04:38.143 回答