SQL结果在存储过程中设置

时间:2015-12-14 21:12:26

标签: sql-server stored-procedures

我目前有2个存储过程,我正在尝试将其合并为1.第一个SP应该只返回来自我的数据库的1条记录。

第二个SP返回许多记录(31k +)。

目前我只是将我的数据插入到临时表中,其中包含以下查询:

insert @Results3
   select r2.d_key
   select r1.name
   select r1.comments
   select r1.time
   select r1.more select statements....
from (select distinct * from @results1) as r1, (select * from @results2) as r2

这样可以获取我的数据,但R1表中的数据只会返回1个结果。但是,我的查询将为我的R2表中的每条记录返回相同的结果。

基本上所需的结果是:

d_key, name, comments, time
1, test_name, 'some comment', 10:00:00
2, null, null, null 
3, null, null, null
4, null, null, null

等。

而不是:

d_key, name, comments, time
1, test_name, 'some comment', 10:00:00
2, test_name, 'some comment', 10:00:00
3, test_name, 'some comment', 10:00:00
4, test_name, 'some comment', 10:00:00

有更好的方法吗?我宁愿不能获得相同数据31k次我不需要。

2 个答案:

答案 0 :(得分:1)

如果要从您控制的应用程序中使用存储过程,则可以使用多个活动结果集(MARS)。您需要相应地更新代码和连接字符串。下面的链接解释了这个概念,然后引导您完成实施。

https://msdn.microsoft.com/en-us/library/ms131686(v=sql.120).aspx

答案 1 :(得分:0)

如果没有按照你所描述的方式想要结果集输出的原因,并假设你希望r1的值只输出到第一行,那么这个查询应该完成这项工作:

insert @Results3
select r2.d_key,
r1.*
from (select * from @results2) r2
left outer join (select * from @results1) r1
on r2.d_key = (select min(d_key) from results2)