Nemůžete, ne bez úpravy uložené procedury.
V SQL Server můžete pouze vložit první sadu výsledků uložené procedury do jiné tabulky pomocí INSERT...EXEC
. Počet sloupců a pozice se musí přesně shodovat a INSERT...EXEC
nelze vnořit, tj. nemůžete vložit z proc1 do tabulky v proc2 a poté vložit z proc2 do tabulky v proc3. Takže INSERT...EXEC
je zcela neuspokojivé řešení.
Řešením je upravit postup pro vkládání výsledků do dočasných tabulek definovaných v oboru volání, např.:
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
Pokud nemůžete postup upravit, máte smůlu. OPRAVA :jak laskavě zdůraznil HABO, mohli byste použijte CLR k iteraci sad výsledků. Podrobnosti viz odkaz níže. Není to špatné, pokud víte, co děláte, a nemáte jinou možnost.
Další podrobnosti o sdílení dat mezi uloženými procedurami naleznete v tomto velmi obsáhlém článku od Erlanda Sommarskoga:http:// www.sommarskog.se/share_data.html