我是SQL Server数据库的初学者。我有一个基本问题。
如何在temporary table
中检索SQL Server
的列名?
我尝试查询sys.objects
,但该表未在其中列出。
答案 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