Nie możesz, nie bez modyfikacji procedury składowanej.
W SQL Server, możesz wstawić tylko pierwszy zestaw wyników procedury składowanej do innej tabeli, poprzez INSERT...EXEC
. Liczba kolumn i pozycje muszą dokładnie pasować, a INSERT...EXEC
nie można zagnieżdżać, tj. nie można wstawić z proc1 do tabeli w proc2, a następnie wstawić z proc2 do tabeli w proc3. Więc INSERT...EXEC
jest całkowicie niesatysfakcjonującym rozwiązaniem.
Obejściem tego problemu jest modyfikacja procedury w celu wstawienia wyników do tabel tymczasowych zdefiniowanych w zakresie wywołania, np.:
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
Jeśli nie możesz zmodyfikować procedury, nie masz szczęścia. KOREKTA :jak uprzejmie zauważył HABO, możesz użyj środowiska CLR do iteracji zestawów wyników. Zobacz link poniżej, aby uzyskać szczegółowe informacje. Nieźle, jeśli wiesz, co robisz i nie masz innego wyboru.
Więcej informacji na temat udostępniania danych między procedurami składowanymi można znaleźć w tym bardzo obszernym artykule autorstwa Erlanda Sommarskoga:http:// www.sommarskog.se/share_data.html