Anda tidak bisa, bukan tanpa memodifikasi prosedur tersimpan.
Di SQL Server, Anda hanya dapat menyisipkan kumpulan hasil pertama dari prosedur tersimpan ke tabel lain, melalui INSERT...EXEC
. Jumlah kolom dan posisi harus sama persis, dan INSERT...EXEC
tidak dapat disarangkan, yaitu Anda tidak dapat menyisipkan dari proc1 ke tabel di proc2, lalu menyisipkan dari proc2 ke tabel di proc3. Jadi INSERT...EXEC
adalah solusi yang sama sekali tidak memuaskan.
Solusinya adalah memodifikasi prosedur untuk memasukkan hasil ke dalam tabel sementara yang ditentukan dalam lingkup panggilan, misalnya:
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
Jika Anda tidak dapat mengubah prosedurnya, Anda kurang beruntung. KOREKSI :seperti yang ditunjukkan oleh HABO, Anda bisa gunakan CLR untuk mengulangi set hasil. Lihat tautan di bawah untuk detailnya. Tidak terlalu buruk jika Anda tahu apa yang Anda lakukan, dan tidak punya pilihan lain.
Untuk detail lebih lanjut tentang berbagi data antar prosedur tersimpan, lihat artikel yang sangat komprehensif ini oleh Erland Sommarskog:http:// www.sommarskog.se/share_data.html