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

问题描述 投票:2回答:4

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

如何在temporary table中检索SQL Server的列名?我试过查询sys.objects,但表没有在那里列出。

sql-server sql-server-2008 tsql
4个回答
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
投票

临时表存储在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
投票

以下是如何获取当前会话的临时表。

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)

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
© www.soinside.com 2019 - 2024. All rights reserved.