我是SQL Server数据库的初学者。我有一个基本问题。
如何在temporary table
中检索SQL Server
的列名?我试过查询sys.objects
,但表没有在那里列出。
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%'
但请注意,本地临时表名称不是唯一的。我们可以从不同的会话中使用相同的名称。所以要小心查询。
临时表存储在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%';
以下是如何获取当前会话的临时表。
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)
`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