如何从临时表中检索字段名(SQLServer2008)

我使用的是 SQLServer2008。假设我创建了一个像下面这样的临时表:

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

如何动态检索字段列表:

Fields:
col1
col2

我想查询 sys.column,但它似乎没有存储任何关于临时表的信息?

108484 次浏览

临时表是在“ temdb”中定义的,表名是“混淆的”。

这个查询应该可以解决这个问题:

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

马克

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

安东尼

试试下面这个,它会给你预期的输出

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

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

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


select * From #test


exec tempdb..sp_columns '#test'

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