Я уверен, что заголовок моего вопроса не имеет большого смысла. Но вот то, чего я пытаюсь достигнуть. У меня есть таблица с другими историями (столбцами является StoryID, StoryTitle, StoryDesc, StoryCategory), таким образом, каждая история может принадлежать категории. например, category1, category2.... category10. Я нахожусь в потребности SP, где я указываю категории как параметры (несколько категорий, в формате CSV или XML), и SP возвратится, истории принадлежат этому категории.
Я не уверен, каков был бы лучший способ сделать это в одном вызове SP. Любые указатели будут цениться.
спасибо
Вызовите вашу хранимую процедуру, передав параметры категорий в качестве входных параметров.
В коде 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
Создаем временную таблицу
создаем таблицу #MySp_Categories (
categoryId int not null первичный ключ
)
Вставьте в нее список категорий и вызовите свою процедуру (MySp
).
В MySp
соединитесь с #MySp_Categories
.
После завершения процедуры сбросьте #MySp_Categories.
Немного сложный протокол, но работает.
Закодируйте список категорий как XML и передайте в процедуру параметр varchar, содержащий XML. В процедуре используйте OPENXML в запросе.