如何从临时表中检索字段名称(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'))