Задать вопрос
swanrnd
@swanrnd
Издатель HTML5 игр

Как правильно передать массив как параметр в SQL запрос?

Имеем такой запрос.
SQLname = "SELECT name FROM dbo.table WHERE id IN("+String.Join(",", items.ToArray())+");";
                using (var comm = new SqlCommand(SQLname, conn, null))
                {

                    using (var reader = comm.ExecuteReader())
                    {
                        while (reader.Read())
                        {
   
                        }                          
                    }
                }


Как лучше передавать список для IN?
Может как-то можно параметризировать или сделать более правильно, основная проблема, что значений может быть от 1 до 1000.
  • Вопрос задан
  • 6807 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Dronablo
Oracle performance geek
Не самая новая статья, но тем не менее: Тесты методов передачи списковых переменных в хран....
Ответ написан
Комментировать
vvovas
@vvovas
Думаю через xml параметр будет самым простым способом. В процедуре сделаете join.

что-то типа:
create procedure p(
	@ids xml
)
begin
	select name 
	from 
		dbo.table 
		inner join @ids.nodes('/items/item') root(items) 
			on id = items.value('(text())[1]', 'int')
end


в примере xml будет иметь вид
<items>
	<item>1</item>
	...
	<item>1000</item>
</items>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы