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

时间:2009-04-16 13:22:08

标签: sql sql-server sql-server-2008 temp-tables

我正在使用SQL Server 2008.假设我创建了一个像这样的临时表:

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

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

Fields:
col1
col2

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

7 个答案:

答案 0 :(得分:122)

select * from tempdb.sys.columns where object_id =
object_id('tempdb..#mytemptable');

答案 1 :(得分:28)

select * 
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name like '#MyTempTable%'

答案 2 :(得分:7)

临时表在“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%'

马克

答案 3 :(得分:7)

使用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'))

答案 4 :(得分:3)

你也可以按照以下方式做到。

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

select * From #test

exec tempdb..sp_columns '#test'

答案 5 :(得分:1)

安东尼

尝试下面的一个。它会给出你期望的输出

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

答案 6 :(得分:0)

select * 
from tempdb.INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME=OBJECT_NAME(OBJECT_ID('#table'))