2013-04-18 2 views
0

Мой вопрос является основным.Переключить переменную в запросе - SQL Server 2008

Я создаю хранимую процедуру и иметь его следующую переменную:

@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

ответ

3

Вам нужно динамический SQL, чтобы добавить пункт WHERE в запросе. Оператор SELECT - это не просто строка. Вы также должны быть очень осторожны с SQL-инъекцией. Как вы проверяете, какие пользователи вводят этот параметр where 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 + '%'; 
Смежные вопросы