使用临时表联合多个sp结果集

时间:2014-12-22 10:10:47

标签: sql sql-server sql-server-2008 stored-procedures

我正在尝试合并我的multipl sp结果集,我不能使用temptable将每个结果插入到表中,因为我的sp也使用insert into语句。那么我怎样才能做到这一点。这就是我尝试过的但它不起作用

declare  @SQL varchar(200)
declare @sql2 varchar(200)
declare @sqlresult varchar(200)
set @SQL = 'exec GetCDCDATA ''Employee'' '

set @sql2 = 'exec GetCDCDATA ''EmployeeDATA'' '
set @sqlresult=@SQL+' UNION ALL ' +@sql2
exec SP_executesql @sqlresult

1 个答案:

答案 0 :(得分:1)

使用OpenRowset执行您的SP。

SELECT *
FROM   OPENROWSET('SQLNCLI',
                  'Server=localhost;Trusted_Connection=yes;',
                  'exec dbname.schemaname.GetCDCDATA ''Employee'' WITH RESULT SETS ((col1 datatype, col2 datatype,...))')
UNION ALL
SELECT *
FROM   OPENROWSET('SQLNCLI',
                  'Server=localhost;Trusted_Connection=yes;',
                  'exec dbname.schemaname.GetCDCDATA ''EmployeeDATA'' WITH RESULT SETS ((col1 datatype, col2 datatype,...))') 

确保两个SP返回相似数量的列

如果你有任何error喜欢

  

Msg 7415,Level 16,State 1,Line 1 Ad hoc访问OLE DB提供程序   'Microsoft.ACE.OLEDB.12.0'已被拒绝。你必须访问它   提供者通过链接服务器。

在这种情况下,您可能需要启用ad hoc distributed queries。默认情况下,SQL Server不允许使用OPENROWSET

进行临时分布式查询
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO