执行一个存储过程,能否实现同时返回几个值和行集?
执行一个存储过程,能否实现同时返回几个值和行集?
例如我要同时返回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# 以上只是本人的想法~