27-12-2019, Saat: 22:37
(Son Düzenleme: 27-12-2019, Saat: 22:46, Düzenleyen: sabanakman.)
Aslında hedeflediğiniz işlem için farklı bir yapı tavsiye edeceğim. Örnek basit bir select-from üzerinden tarif edildi ama sadece select üzerinden ayar çekerek istediğiniz işlemi yapabilirsiniz. Ana mantık bir tablo üreten sorguyu (burada sp_executesql Stored Procedure üzerinden kullandık) alan isimleri uyuşacak şekilde insert sorgusunda kullanabilmemizdir.
declare @TabloAdi nvarchar(50), @RaporSQL nvarchar(max) = N'select alan1, alan2, alan3 from ', @SQL nvarchar(max) declare @Rapor table (id int identity, alanA nvarchar(50), alanB nvarchar(50), alanC nvarchar(50)) set @TabloAdi = N'dbX.dbo.Tablo' set @SQL = @RaporSQL + @TabloAdi insert into @Rapor (alaA, alanB, alanC) execute sp_executesql @SQL set @TabloAdi = N'dbY.dbo.Tablo' set @SQL = @RaporSQL + @TabloAdi insert into @Rapor (alaA, alanB, alanC) execute sp_executesql @SQL set @TabloAdi = N'dbZ.dbo.Tablo' set @SQL = @RaporSQL + @TabloAdi insert into @Rapor (alaA, alanB, alanC) execute sp_executesql @SQL select * from @RaporGörüldüğü üzere @SQL değişkeninde (bir tablo içindeki) listelenecek sorguyu oluşturduktan sonra declare table ile tanımlı @Rapor tablo değişkenine direkt insert into ile ekledik. Aynı şekilde başka tabloları da art arda insert into ile eklememiz durumunda @Rapor tablosunda bütün eklenen kayıtlar birikecek ve istenilen kayıtların hepsi bir arada bu tabloda bulunacaktır.