Как получить имена полей из временной таблицы (SQL Server 2008)
Я использую SQL Server 2008. Скажем, я создаю временную таблицу, как эта:
create table #MyTempTable (col1 int,col2 varchar(10))
Как я могу получить список полей динамически? Хотелось бы увидеть что-то вроде этого:
Fields:
col1
col2
Я думал о запросе sys.столбцы, но он, похоже, не хранит никакой информации о временных таблицах. Есть идеи?
7 ответов:
использовать 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", а имена таблиц"искажены".
этот запрос должен сделать трюк:
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'