Передача нескольких параметров фильтрации к сохраненному Proc

Я уверен, что заголовок моего вопроса не имеет большого смысла. Но вот то, чего я пытаюсь достигнуть. У меня есть таблица с другими историями (столбцами является StoryID, StoryTitle, StoryDesc, StoryCategory), таким образом, каждая история может принадлежать категории. например, category1, category2.... category10. Я нахожусь в потребности SP, где я указываю категории как параметры (несколько категорий, в формате CSV или XML), и SP возвратится, истории принадлежат этому категории.

Я не уверен, каков был бы лучший способ сделать это в одном вызове SP. Любые указатели будут цениться.

спасибо

1
задан Jon Seigel 8 July 2010 в 20:14
поделиться

2 ответа

Вызовите вашу хранимую процедуру, передав параметры категорий в качестве входных параметров.

В коде SQL процедуры отфильтруйте его с помощью:

Выберите * из историй, где StoryCategoy = category1 OR StoryCategory = category2 и т.д ...

Эта ссылка предоставит вам лучший способ сделать это ...

Передача массивов в хранимые процедуры SQL в C # ASP .NET

О, это еще лучше:

Передача списков в SQL Server 2005 с параметрами XML

Некоторый код для иллюстрации:

DECLARE @categoryIds xml
SET @categoryIds ='<Categories><id>17</id><id>83</id><id>88</id></Categories>'

SELECT
ParamValues.ID.value('.','VARCHAR(20)')
FROM @categoryIds.nodes('/Categories/id') as ParamValues(ID)

Это дает нам следующие три строки:

17
83
88
1
ответ дан 2 September 2019 в 23:25
поделиться
  1. Создаем временную таблицу

    создаем таблицу #MySp_Categories (
     categoryId int not null первичный ключ
    )
    

    Вставьте в нее список категорий и вызовите свою процедуру (MySp). В MySp соединитесь с #MySp_Categories. После завершения процедуры сбросьте #MySp_Categories.

    Немного сложный протокол, но работает.

  2. Закодируйте список категорий как XML и передайте в процедуру параметр varchar, содержащий XML. В процедуре используйте OPENXML в запросе.

1
ответ дан 2 September 2019 в 23:25
поделиться
Другие вопросы по тегам:

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