首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

执行一个存储过程,能否实现同时返回几个值和行集?解决方案

2012-02-14 
执行一个存储过程,能否实现同时返回几个值和行集?执行一个存储过程,能否实现同时返回几个值和行集?例如我

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

热点排行