wake-up-neo.net

Abrufen von Feldnamen aus temporärer Tabelle (SQL Server 2008)

Ich verwende SQL Server 2008. Angenommen, ich erstelle eine temporäre Tabelle wie diese:

create table #MyTempTable (col1 int,col2 varchar(10))

Wie kann ich die Liste der Felder dynamisch abrufen? Ich würde gerne so etwas sehen:

Fields:
col1
col2

Ich habe überlegt, sys.columns abzufragen, aber es scheint keine Informationen über temporäre Tabellen zu speichern. Irgendwelche Ideen?

61
Anthony
select * from tempdb.sys.columns where object_id =
object_id('tempdb..#mytemptable');
116
kristof
select * 
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name like '#MyTempTable%'
27
Ed Guiness

Information_schema verwenden und nicht mit anderen Sitzungen kollidieren:

select * 
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name =
    object_name(
        object_id('tempdb..#test'),
        (select database_id from sys.databases where name = 'tempdb'))
7
quillbreaker

Die temporären Tabellen sind in "tempdb" definiert und die Tabellennamen sind "entstellt". 

Diese Abfrage sollte den Trick tun:

select c.*
from tempdb.sys.columns c
inner join tempdb.sys.tables t ON c.object_id = t.object_id
where t.name like '#MyTempTable%'

Marc

6
marc_s

sie können es auch auf folgendem Weg tun ..

create table #test (a int, b char(1))

select * From #test

exec tempdb..sp_columns '#test'
3
Nishad

Anthony 

versuchen Sie es mit dem folgenden. Es wird Ihre erwartete Ausgabe geben

select c.name as Fields from 
tempdb.sys.columns c
    inner join tempdb.sys.tables t
 ON c.object_id = t.object_id
where t.name like '#MyTempTable%'
1
Franklin
select * 
from tempdb.INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME=OBJECT_NAME(OBJECT_ID('#table'))
0
elle0087