2013-01-12 105 views
3

我试图将几个存储过程的结果合并到一个临时表中。各种存储过程的结果具有相同的列结构。本质上,我想UNION ALL各种存储过程的结果。一个显著的事实:每个存储过程创建一个临时表来存储其数据和结果中的每个回报是基于对临时表中的选择:如何将存储过程#1的结果存储到存储过程#2中的临时表中

create proc SP1  
as 
. 
. <snip> 
. 
select * from #tmp -- a temporary table 

注意到select * from OPENQUERY(server, 'exec SP1')不工作,如果在SP1中的选择是针对临时表的(请参阅this question了解详细信息),还有另一种方法可以让不同的存储过程SP2获得执行SP1到临时表中的结果吗?

create proc SP2 as 
    -- put results of executing SP1 into a temporary table: 
    . 
    . 
    . 

注意:不能修改SP1(例如,将其结果存储在具有会话范围的临时表中)。

回答

8

创建临时表,使其适合存储过程的结果。

假设你的温度。表被称为“#MySuperTempTable”,你会做这样的事情...

INSERT INTO #MySuperTempTable (Column1, Column2) 
EXEC SP1 

这应该做的伎俩。

+0

如果不需要,甚至不需要指定列列表。 – ErikE

+0

当然。谈到编写SQL查询时,您现在已经看到了我的肛门保持能力。 – Tombatron

+0

我的宠物小猪是插入没有列名......好,除非它是由选择WITH列名称填充。我感谢你的肛门保持力 – JDPeckham

0
INSERT INTO #MySuperTempTable 
EXEC SP1 

以上代码风格但sqlserver不是compialing指令。

相关问题