这个问题有点怪,比较别扭。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:
...
}
}
注意:上面的存储过程等代码只是示范,当伪代码理解好了:)
你执行看看DataSet几个table。
为什么不分开呢?,像你这种处理,两个存储过程不影响速度的