3

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

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

请注意,select * from OPENQUERY(server, 'exec SP1')如果 SP1 中的选择针对临时表不起作用(有关详细信息,请参阅此问题),是否有另一种方法可以让不同的存储过程 SP2 将执行 SP1 的结果放入临时表中?

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

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

4

2 回答 2

8

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

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

INSERT INTO #MySuperTempTable (Column1, Column2)
EXEC SP1

这应该够了吧。

于 2013-01-12T14:44:41.587 回答
0
INSERT INTO #MySuperTempTable 
EXEC SP1

遵循上述代码风格,但 sqlserver 不编译指令。

于 2013-04-10T06:21:50.800 回答