[英]How to retrieve field names from temporary table (SQL Server 2008)
我正在使用SQL Server 2008.假設我創建了一個像這樣的臨時表:
create table #MyTempTable (col1 int,col2 varchar(10))
如何動態檢索字段列表? 我想看到這樣的事情:
Fields:
col1
col2
我在考慮查詢sys.columns但它似乎沒有存儲任何關於臨時表的信息。 有任何想法嗎?
select * from tempdb.sys.columns where object_id =
object_id('tempdb..#mytemptable');
select *
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name like '#MyTempTable%'
要使用information_schema而不與其他會話沖突:
select *
from tempdb.INFORMATION_SCHEMA.COLUMNS
where table_name =
object_name(
object_id('tempdb..#test'),
(select database_id from sys.databases where name = 'tempdb'))
臨時表在“tempdb”中定義,表名稱為“mangled”。
這個查詢應該做的伎倆:
select c.*
from tempdb.sys.columns c
inner join tempdb.sys.tables t ON c.object_id = t.object_id
where t.name like '#MyTempTable%'
渣
你也可以通過以下方式來做到這一點。
create table #test (a int, b char(1))
select * From #test
exec tempdb..sp_columns '#test'
安東尼
試試下面的一個。 它會給你預期的輸出
select c.name as Fields from
tempdb.sys.columns c
inner join tempdb.sys.tables t
ON c.object_id = t.object_id
where t.name like '#MyTempTable%'
select *
from tempdb.INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME=OBJECT_NAME(OBJECT_ID('#table'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.