Использование параметра для IN в запросе адаптера таблицы - PullRequest
1 голос
/ 06 апреля 2011

У меня есть запрос в myTableAdapter, который заканчивается столбцом WHERE IN (@S). Это прекрасно работает, когда я использую myTableAdapter.Fill (dataset.table, "text"), но я не могу найти какой-либо способ, который работает для предоставления нескольких текстовых строк, таких как "text1, text2" для параметра IN. Как это можно сделать?

1 Ответ

0 голосов
/ 06 апреля 2011

Это невозможно, так как стоит, насколько я знаю.

Альтернативой является использование динамического SQL (т. Е. Генерирование в коде предложения WHERE), но это плохая практика, если вы действительно не заботитесь о безопасности, удобстве обслуживания или удобочитаемости!

Другая крайность заключается в написании табличной функции для использования на сервере БД, которая принимает ваш параметр @S. Этот параметр должен быть строкой с разделителями, которую можно затем проанализировать в функции, используя конструкции T-SQL WHILE и BEGIN ... END, вставляя каждый элемент из вашей строки в временную таблицу.

Наконец, предложение WHERE вашего запроса станет примерно таким:

WHERE myField in (SELECT myTempColumn from [dbo].[myParsingFunction] (@S))
...