我知道用户定义的类型存储在information_schema.domains
中,但可以获得类型为table type
的类型的定义吗?是否可以从INFORMATION_SCHEMA获取表类型定义?
要清楚我正在寻找实际的表类型定义:
例如,我想列定义为myTableType
CREATE TYPE myTableType AS TABLE(
Id INT,
SomeValue NVARCHAR(20)
);
我知道用户定义的类型存储在information_schema.domains
中,但可以获得类型为table type
的类型的定义吗?是否可以从INFORMATION_SCHEMA获取表类型定义?
要清楚我正在寻找实际的表类型定义:
例如,我想列定义为myTableType
CREATE TYPE myTableType AS TABLE(
Id INT,
SomeValue NVARCHAR(20)
);
获取表类型,列和数据类型的列表中的用户定义的表型。
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
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
有用的查询,谢谢 –
的什么版本SQL Server?你有没有理由不能使用新的DMV? – Yuck
您正在为用户定义的表类型定义寻找相应的'INFORMATION_SCHEMA.COLUMNS',是吗? – billinkc
@billinkc这是正确的。 – Romoku