我正在尝试合并我的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
答案 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