找到Temp表的列名

时间:2015-05-29 17:17:03

标签: sql sql-server tsql temp-tables

我需要找到临时表列名称

如果它是物理表,那么我们可以使用sys.columnsInformation_schema.columns系统视图来查找列名。

同样有办法找到临时表中的列名吗?

2 个答案:

答案 0 :(得分:10)

SELECT *
FROM   tempdb.sys.columns
WHERE  object_id = Object_id('tempdb..#sometemptable'); 

答案 1 :(得分:0)

要仅获取列名,可以在下面使用此查询:

SELECT * 
FROM tempdb.sys.columns 
WHERE [object_id] = OBJECT_ID(N'tempdb..#temp');

要获取具有数据类型的列名,可以使用此查询,但需要确保sp_help在表所在的同一数据库(tempdb)中运行。

EXEC tempdb.dbo.sp_help @objname = N'#temp';

您可以通过加入tempdb.sys.columns来获得相同的结果,如下所示:

SELECT [column] = c.name, 
       [type] = t.name, c.max_length, c.precision, c.scale, c.is_nullable 
    FROM tempdb.sys.columns AS c
    INNER JOIN tempdb.sys.types AS t
    ON c.system_type_id = t.system_type_id
    AND t.system_type_id = t.user_type_id
    WHERE [object_id] = OBJECT_ID(N'tempdb.dbo.#temp');