我正在使用SQL Server2008。假设我创建了一个像这样的临时表:
create table #MyTempTable (col1 int,col2 varchar(10))
如何动态检索字段列表?我想看到这样的东西:
Fields:
col1
col2
我正在考虑查询sys.columns,但似乎没有存储有关临时表的任何信息。有任何想法吗?
Answers:
select *
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name like '#MyTempTable%'
INFORMATION_SCHEMA
。您可以通过JOINing轻松获得数据类型sys.types
,也可以通过OBJECT_NAME( object_id , database_id )
或JOINing to轻松获取表名称tempdb.sys.tables
。这就是INFORMATION_SCHEMA
视图所要做的。
临时表是在“ 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%'
马克
您也可以按照以下方式来做..
create table #test (a int, b char(1))
select * From #test
exec tempdb..sp_columns '#test'
CREATE TABLE
: exec tempdb..sp_columns '#test'
select name from tempdb.sys.tables
获取所有临时表名称