列出SQL Server临时表中的列名称

时间:2018-07-26 16:21:37

标签: sql-server sql-server-2008 tsql

我是SQL Server数据库的初学者。我有一个基本问题。

如何在temporary table中检索SQL Server的列名? 我尝试查询sys.objects,但该表未在其中列出。

4 个答案:

答案 0 :(得分:2)

临时表存储在tempdb数据库中,因此您必须从tempdb数据库中查询视图。像这样:

SELECT c.name
FROM tempdb.sys.objects o
INNER JOIN tempdb.sys.columns c ON c.object_id = o.object_id
WHERE o.name LIKE '#TempTableName%';

答案 1 :(得分:1)

SELECT Obj.NAME
    ,Col.NAME
FROM tempdb.sys.objects Obj
INNER JOIN tempdb.sys.columns Col ON Obj.object_id = Col.object_id
WHERE Obj.NAME LIKE '#tmp%'

但是请注意,本地临时表名称将不是唯一的。我们可以在不同的会话中使用相同的名称。因此请小心查询。

答案 2 :(得分:1)

这里是仅获取当前会话的临时表的方法。

SELECT c.name
FROM tempdb.sys.objects o
INNER JOIN tempdb.sys.columns c ON c.object_id = o.object_id
WHERE o.object_id = object_id('tempdb..#TempTableName)

答案 3 :(得分:1)

`SELECT STUFF( 
   `(SELECT ',' + LTRIM(RTRIM(ISNULL(name,''))) 
      `FROM tempdb.sys.columns 
      `WHERE Object_ID = Object_ID(N'tempdb..#TEMP')
      `FOR XML PATH(''), TYPE).value('.','varchar(max)'), 1, 1, '') 
`AS comma_separated_list