Выборка полей временной таблицы с параметрами в MSSQL
Пример выборки полей из временной таблицы со всеми параметрами.
Идентично можно выбирать и для обычных таблиц.
Select c.column_id
,c.name [column_name]
,y.name [data_type]
,c.max_length
,c.precision
,c.scale
,c.is_identity
,c.is_nullable
,c.collation_name
,', ['+c.name +'] ['+y.name+']'
+IIF (y.name in ('varchar','char'),'('+cast(IIF(c.max_length=0,'max',c.max_length) as varchar(5))+')','')
+IIF (y.name in ('nvarchar'),'('+cast(IIF(c.max_length=0,'max',c.max_length/2) as varchar(5))+')','')
+IIF (y.name in ('decimal','numeric'),'('+cast(c.precision as varchar(3))+', '+cast(c.scale as varchar(3))+')','')
+IIF (not y.collation_name is null,' COLLATE '+y.collation_name,'')
+IIF (y.is_nullable = 1,' NULL','')
as [ready_column]
From tempdb.sys.columns c
Inner join sys.types y ON y.system_type_id = c.system_type_id
WHERE c.object_id = Object_id('tempdb..#tmp')
and y.name!='sysname'
order by c.column_id
#tmp - ваша временная таблица