Параметры ADO.NET TableAdapter - PullRequest
6 голосов
/ 16 марта 2009

У меня есть запрос, который я хочу выполнить через ASP.NET TableAdapter, который содержит предложение IN, которое должно получать свои значения через параметр.

У меня вопрос, как мне указать этот параметр? Я думал написать условное утверждение так:

AND b.group_category_id in (@ParamList)

где @ParamList - это строка параметров, например «4,12,45,23», но поскольку указанный идентификатор является целым числом, он жалуется, что не может преобразовать строку в целое число. Это имеет смысл, но есть ли способ указать такой список в выражении SQL в ASP.NET TableAdapter?

Ответы [ 4 ]

1 голос
/ 18 марта 2009

Один обходной путь, который я видел:

WHERE charindex(',' + cast(b.group_category_id as varchar) + ',', @ParamList) > 0

В этом случае @ParamList будет строкой в ​​форме ", 4,12,45,23,"

Это не "красиво", но сохраняет параметр и преимущества скомпилированного запроса. Поскольку вы ищете числа, подстрока гарантирует уникальное совпадение.

1 голос
/ 16 марта 2009

Вы можете взглянуть на http://dotnet.org.za/johanvw/archive/2008/06/13/mssql-split-function.aspx и передать его действительно как строку. Вид обходного пути, чем решение. Но это будет полезно только если вы используете MSSQL.

0 голосов
/ 25 октября 2012

Отвечая на мой собственный вопрос: это невозможно сделать.

0 голосов
/ 16 марта 2009

Вы можете передать @ParamList в виде строки, разделенной запятыми, проанализировать строку и вставить результаты в #table, а затем использовать IN для поиска #table:

AND b.group_category_id in (select group_category_id from #group_category_id_list)

Кроме этого, ваши возможности ограничены, если вы не хотите использовать динамический SQL (выражение exec ()), но я бы посоветовал вам по возможности этого избежать.

...