Не можете, без да модифицирате съхранената процедура.
В 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 за повторение на наборите от резултати. Вижте връзката по-долу за подробности. Не е лошо, ако знаете какво правите и нямате друг избор.
За повече подробности относно споделянето на данни между съхранени процедури вижте тази много изчерпателна статия от Erland Sommarskog:http:// www.sommarskog.se/share_data.html