2014-12-22 61 views
0

我想合併我的multipl sp結果集,我不能使用temptable插入每個結果到表中,因爲我的sp也使用insert into語句。那麼我怎麼能做到這一點。這是我曾嘗試,但它不工作聯合多個sp結果集使用臨時表出來

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

set @sql2 = 'exec GetCDCDATA ''EmployeeDATA'' ' 
set @[email protected]+' UNION ALL ' [email protected] 
exec SP_executesql @sqlresult 
+0

UNION ALL只能使用SELECT語句。它不適用於SP。如果可能,你可以創建UDF而不是SP,那麼你可以使用UNION ALL來獲取數據 –

+0

好的,那麼什麼是sp的替代?當我們在sp – Ancient

+0

中插入命令時如果你只在SP中插入語句,那麼whar正在使用UNION ALL進行重試? –

回答

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

消息7415,級別16,狀態1,行特設到OLE訪問數據庫提供商 '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 
+0

它應該與問題 – Ancient

+0

提到的臨時表@古老 - 更新檢查現在 –

+0

什麼是SQLNCLI? – Ancient

相關問題