2011-01-18 3 views
2

Возможные Дубликаты:
Parameterizing a SQL IN clause?
SQL Server - In clause with a declared variableПопутный параметры пункта IN в SQL Server

Привет,

Я перед проблемой передачи параметров 'IN' п. Я использую следующий запрос.

Запрос:

SELECT Topics.Topic_Id FROM Topics 
    Where Topic_Description IN (''+ @Topics +'')  

Этот запрос работает, если параметр имеет одно значение. Мой параметр может иметь разделенные запятыми несколько значений: «один», «два», «три», «четыре». Но запрос терпит неудачу, когда есть несколько параметров. Как преодолеть это? Пожалуйста, предложите.

Благодаря

Я должен использовать выше, как часть хранимой процедуры. Я должен принять результат запроса на выборку в курсор, как показано ниже:

DECLARE CURSOR cur_TopicIDs ДЛЯ ВЫБОР Topics.Topic_Id ОТ Темы Где Topic_Description IN («» + @Topics + «») .... и т.д.

в этом случае, как я могу использовать динамический зр, как предложено в других ссылках

ответ

0

Вы должны создать строку формата one','two','three в качестве значения в @Topics.

EDIT: - Затем вам необходимо использовать EXEC sp_executesql для выполнения вашего оператора sql. Ответ правильно объяснен в ссылке, указанной spender на ваш вопрос.

+0

Вы уверены в этом? OP не дает понять, где собирается запрос. – spender

+0

@spender - Я сам этого не пробовал. Но, поскольку он заменяет строку, я полагаю, что это сработает. becacuse OP уже добавляет первый «и последний». Между ними нужно заполнить его строкой заданного формата. –

+0

Этот подход был бы уязвим для SQL-инъекции. Функция разделения более безопасна. –