日期:2014-05-19  浏览次数:20494 次

执行一个存储过程,能否实现同时返回几个值和行集?
执行一个存储过程,能否实现同时返回几个值和行集?
例如我要同时返回table1中的字段的2个值,同时返回table2的10行(每行是有多个字段的).
如何将这些结果在程序中分别获取出来?

------解决方案--------------------
create procedure proc_name
@ret1 int output,
@ret2 varchar(20) output
as
set nocount on
select top 1 @ret1=field1,@ret2=field2 from table1

select top 10 * from table2
go

--调用
declare @r1 int
declare @r2 varchar(20)

exec proc_name @r1 output,@r2 output
print @r1
print @r2



------解决方案--------------------
想同时获得输出参数的值是不可能的

在存储过程里面如果有结果集又有输出参数,那么必须等到DataReader关闭以后才能得到输出参数的值,

注意虽然很麻烦但是你少连接了一次数据库,节省了许多开销,也是很值得的
------解决方案--------------------
是union all 打错
有点像C#中的meger
如你的列:select * from table
结果
id ,col1,col2
1 qw qg
2 eg ge

假设你的输出参数为@ret1,@ret2
就 select * from table union all
select 0,@ret1,@ret2

结果就会
id ,col1,col2
1 qw qg
2 eg ge
0 @ret1 @ret2

我也刚学C# 以上只是本人的想法~