如何将存储过程#1的结果存入存储过程#2中的临时表

时间:2013-01-12 14:34:19

标签: stored-procedures sql-server-2012 temp-tables

我正在尝试将几个存储过程的结果合并到一个临时表中。各种存储过程的结果具有相同的列结构。从本质上讲,我想UNION ALL各种存储过程的结果。一个重要的事实:每个存储过程都创建一个临时表来存储其数据,每个返回的结果都基于对临时表的选择:

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

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

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

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

2 个答案:

答案 0 :(得分:8)

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

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

INSERT INTO #MySuperTempTable (Column1, Column2)
EXEC SP1

这应该可以解决问题。

答案 1 :(得分:0)

INSERT INTO #MySuperTempTable 
EXEC SP1

遵循上面的代码样式,但sqlserver不是重复说明。