Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да взема множество изходи от съхранена процедура във временна таблица

Не можете, без да модифицирате съхранената процедура.

В 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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените размера на колона в SQL Server (T-SQL)

  2. Как да получите списък с всички езици в SQL Server (T-SQL)

  3. POWER() Примери в SQL Server

  4. Защо доставчикът на данни или друга услуга ми връща статус E_FAIL? SQL Native Client

  5. Свързване на Delphi на Linux към SQL Server