Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mengambil beberapa output dari prosedur tersimpan ke tabel temp

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 Sumber Daya Hebat untuk Membantu Anda Mengguncang Peran Pemantauan Basis Data Anda

  2. Saat menyimpan datetime di sql server (tipe datetime), format apa yang menyimpannya?

  3. Menghindari kebuntuan SQL dengan penyetelan kueri:Saran dari Brent Ozar

  4. DATETIMEFROMPARTS() Contoh di SQL Server (T-SQL)

  5. Jatuhkan semua properti yang diperluas di SQL Server