如何从临时表中检索字段名称(SQL Server 2008)

我正在使用SQL Server 2008.说我创build一个像这样的临时表:

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

如何dynamic地检索字段列表? 我想看到这样的事情:

 Fields: col1 col2 

我正在考虑查询sys.columns,但它似乎并没有存储任何关于临时表的信息。 有任何想法吗?

 select * from tempdb.sys.columns where object_id = object_id('tempdb..#mytemptable'); 
 select * from tempdb.INFORMATION_SCHEMA.COLUMNS where table_name like '#MyTempTable%' 

临时表在“tempdb”中定义,表名称是“mangled”。

这个查询应该做的伎俩:

 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%' 

渣子

要使用information_schema而不与其他会话冲突:

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

你也可以按照下面的方式来做

 create table #test (a int, b char(1)) select * From #test exec tempdb..sp_columns '#test' 

安东尼

尝试下面的一个。 它会给你预期的产出

 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%' 
 select * from tempdb.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=OBJECT_NAME(OBJECT_ID('#table'))