你不能,不能沒有修改存儲過程。
在SQL Server中,只能通過INSERT...EXEC
將存儲過程的第一個結果集插入另一個表中。列數和位置必須完全匹配,並且INSERT...EXEC
不能嵌套,即不能從proc1插入到proc2中的表中,然後從proc2插入到proc3中的表中。所以INSERT...EXEC
是一個完全不滿意的解決方案。
的解決方法是修改插入結果納入在呼叫範圍內定義的臨時表的程序,如:
create proc get_some_data as
insert #temp1 (col1, col2) select col1, col2 from table1
insert #temp2 (colA, colB) select colA, colB from table2
go
create table #temp1 (col1 int, col2 int)
create table #temp2 (colA int, colB int)
exec get_some_data
select * from #temp1
select * from #temp2
drop table #temp1
drop table #temp2
go
如果不能修改的程序,你的運氣了。更正:正如HABO指出的那樣,您可以使用CLR來迭代結果集。詳情請參閱下面的鏈接。如果你知道自己在做什麼,也不會太壞,也別無選擇。
有關存儲過程之間共享數據的詳細信息,請參閱厄蘭Sommarskog這個非常全面的文章:http://www.sommarskog.se/share_data.html
只是爲了澄清,你問一個返回有不同的架構行集2的存儲過程? IIRC,TSQL不支持訪問除返回的第一個行集外的任何內容。 – HABO