设想 :
我需要从存储过程返回单个结果集,但是我有一个可以传递未知多个值的数组参数,并且对于传递的每个值,我需要有一个单独的获取数据的逻辑。
SP :
PROCEDURE [dbo].[GetRecommendations]
(
@RecommendationTypesCSV varchar(4000) -- This could have Type1,Type2,Type3...
}
BEGIN
....
END
一旦我转换了这个逗号分隔的类型,我需要遍历每种类型并执行一些逻辑,但是当我继续执行所需的逻辑时,我收集数据,最后我必须做一个 Union All 并将所有结果作为一个大返回具有新类型列的结果集,并为其分配了相关类型信息。
If (type1)
BEGIN
-- Do Something
END
If (type2)
BEGIN
-- Do Something
END
If (type3)
BEGIN
-- Do Something
END
合并所有三个并返回结果:
Column1 Column2 Column3
----------- ----------- -------
102570 10027 type1
102569 20011 type1
102568 20011 type1
102564 20011 type2
102563 20011 type2
102562 20074 type3
102561 20011 type3
102560 20011 type3
102559 10059 type3
102558 20011 type3
问题 :
我需要决定是否应该对 DB (SQL) 进行一次调用或对每种类型进行多次调用,然后将类型合并到代码中 (C# .Net),请记住这是一个 WCF 客户端面对服务和性能是一个巨大的决策因素,而且类型不仅限于三种类型,还可以是更多类型。
如果进行单个 DB 调用的效率是 cursor 循环遍历类型并合并它们的唯一可能方法 - 示例将不胜感激。