首页 新闻 搜索 专区 学院

asp.net(C#),如何得到存储过程的查询结果集(有两个查询结果集)

0
悬赏园豆:20 [已解决问题] 解决于 2008-09-26 16:13

我用一个存储过程执行查询,得到两个查询结果集,

如果在.net(C#)中,分别得到这个查询结果集呢?

将他们分别放入DataTable或DataReader

因为存储过程参数是一样的,我不想用两个存储过程。

itman020的主页 itman020 | 初学一级 | 园豆:0
提问于:2008-09-19 16:29
< >
分享
最佳答案
0

这个问题有点怪,比较别扭。DataTable、DataReader 是你取出数据后传给其他数据库控件或显示控件用到的(一般作为 objectdatasource select 方法的返回类型)。

存储过程大概也有类似 out 关键字的传值参数, 但鉴于你的存储过程返回的是两张独立的表数据,一来自己没有实践经验,二来猜想用类似 Table 类型的参数获得数据不好操作。

换一个解决思维:你只是不想用两个存储过程,因此在存储过程可增加一个类型参数(比如 ResultType),根据该类型参数的值选择返回前一个结果集,还是后一个结果集。

...

IF(@ResultType == 0)

begin

Return

return Select *, 0 AS ResultType From T1

end

else if(@ResultType == 1)

begin

return Select *, 1 AS ResultType From T2

end

...

而在你的 objectdatasource 的 select 方法中加入类型参数 resultType

public static IDataXXX Select(*, int resultType){

  swicth(resultType){

    case 0:

              ...

               return new DataTable();

    case 1:

               ...

                return XXX.ExcurteReader();

         default:

               ...

  }

}

注意:上面的存储过程等代码只是示范,当伪代码理解好了:)

陛下 | 老鸟四级 |园豆:3938 | 2008-09-19 16:47
其他回答(2)
0

你执行看看DataSet几个table。

roboth | 园豆:28 (初学一级) | 2008-09-19 16:49
0

为什么不分开呢?,像你这种处理,两个存储过程不影响速度的

zjy | 园豆:3194 (老鸟四级) | 2008-09-19 16:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册