我确信我的问题标题没有多大意义。但这就是我想要实现的目标。我有不同故事的表(列是StoryID,StoryTitle,StoryDesc,StoryCategory),因此每个故事都属于一个类别。例如category1,category2,.... category10。我需要一个SP,我将类别指定为参数(多个类别,CSV格式或XML),SP将返回属于这些类别的故事。
我不确定在一次SP通话中执行此操作的最佳方法是什么。任何指针都将受到赞赏。
谢谢
答案 0 :(得分:1)
调用存储过程,将Categories参数作为输入参数传递。
在程序的SQL代码中,用以下内容对其进行过滤:
Select * from Stories where StoryCategoy = category1 OR StoryCategory = category2
等等......
此链接将为您提供更好的方法...
Passing Arrays to SQL Stored Procedures in C# ASP .NET
哦,这个更好了:
Passing lists to SQL Server 2005 with XML Parameters
一些代码要说明:
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 :(得分:1)
创建临时表
create table #MySp_Categories (
categoryId int not null primary key
)
在其中插入类别列表并调用您的程序(MySp
)。
在MySp
加入#MySp_Categories
。
程序结束后删除#MySp_Categories。
协议稍微复杂,但有效。
将类别列表编码为XML,并将包含XML的varchar参数传递给您的过程。在程序中使用查询中的OPENXML。