我正在尝试将几个存储过程的结果合并到一个临时表中。各种存储过程的结果具有相同的列结构。从本质上讲,我想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(例如,将其结果存储在具有会话范围的临时表中)。
答案 0 :(得分:8)
创建临时表,使其符合存储过程的结果。
假设你的温度。 table被称为“#MySuperTempTable”,你会做这样的事情......
INSERT INTO #MySuperTempTable (Column1, Column2)
EXEC SP1
这应该可以解决问题。
答案 1 :(得分:0)
INSERT INTO #MySuperTempTable
EXEC SP1
遵循上面的代码样式,但sqlserver不是重复说明。