Можно ли получить определения типа таблицы из INFORMATION_SCHEMA?

Я знаю, что определенные пользователем типы хранятся в information_schema.domains, но можно ли получить определения типов, которые имеют тип table type?

Чтобы быть ясным, я ищу определение фактического типа таблицы:

например. Я хочу получить определения столбцов для myTableType

CREATE TYPE myTableType AS TABLE(
     Id INT,
     SomeValue NVARCHAR(20)
);

Ответы

Ответ 1

Чтобы получить список столбцов для пользовательского типа таблицы, запустите это. Вам нужно будет заменить имя таблицы для some_table_type:

SELECT *
FROM sys.columns
WHERE object_id IN (
  SELECT type_table_object_id
  FROM sys.table_types
  WHERE name = 'some_table_type'
);

Ответ 2

Получить список типа таблицы, столбцов и типа данных для определенного пользователем типа таблицы.

select tt.name AS table_Type, c.name AS table_Type_col_name,st.name AS   
table_Type_col_datatype
from sys.table_types tt
inner join sys.columns c on c.object_id = tt.type_table_object_id
INNER JOIN sys.systypes AS ST  ON ST.xtype = c.system_type_id

Ответ 3

select tt.name AS table_Type, c.name AS Column_Name,st.name AS Datatype, 
CASE WHEN st.name='numeric' THEN '(' + Convert(varchar(5),C.precision) + ',' + Convert(varchar(5),C.scale) + ')' 
WHEN st.name='varchar' OR st.name='nvarchar' THEN '(' + Convert(varchar(5),c.max_length) + ')' 
ELSE '' END AS Size
,CASE WHEN C.is_nullable =0 THEN 'NOT NULL,' ELSE ',' END AS Nullable
from sys.table_types tt
inner join sys.columns c on c.object_id = tt.type_table_object_id
INNER JOIN sys.systypes AS ST  ON (ST.xusertype = c.system_type_id AND ST.uid=4)
ORDER BY tt.name, c.column_id

Ответ 4

С помощью Management Studio также можно получить доступ к визуальному представлению настраиваемых/определяемых пользователем типов таблиц, как и обычные таблицы.

Разница заключается в том, что пользовательские таблицы отображаются в программируемости node в проводнике объектов, как показано ниже, вместо Таблицы:

Пользовательский тип таблицы, определяемый пользователем