Es gibt mindestens 2 Wege eine Tabelle in eine temporäre Tabelle zu kopieren:
einfacher Weg:
DECLARE @tabelle nvarchar(100)
DECLARE @sql nvarchar(1000)
set @tabelle = "TabellenName"
set @sql = 'select * into ##temp from ' + @tabelle
exec(@sql)
umständlicher Weg:
-- eine leere temporäre Tabelle anlegen
if object_id(N'tempdb..#temp') is not null
begin
drop table #temp
end
create table #temp(id int)
DECLARE TabellenFelder CURSOR FOR
select column_name, data_type, character_maximum_length,is_nullable
from information_schema.columns
where table_name = @Tabelle
order by ordinal_position
OPEN TabellenFelder
FETCH NEXT FROM TabellenFelder INTO @column_name, @data_type, @character_maximum_length, @is_nullable
WHILE @@FETCH_STATUS = 0
BEGIN
--neue Spalte hinzufügen
set @sql = 'alter table #temp add ' + @column_name + ' '
set @sql = @sql + @data_type
if @data_type ='nvarchar'
set @sql = @sql + '(' + @character_maximum_length +')'
exec(@sql)
FETCH NEXT FROM TabellenFelder INTO @column_name, @data_type, @character_maximum_length, @is_nullable
END
CLOSE TabellenFelder
DEALLOCATE TabellenFelder
--die erste Spalte wieder löschen
set @sql = 'alter table #temp drop column id'
exec(@sql)
-- jetzt die Tabelle in die temporäre Tabelle kopieren
set @sql = 'insert into #temp select * from ' + @Tabelle
exec(@sql)