获取用户定义的表类型的列信息

时间:2013-07-03 15:15:58

标签: sql-server code-generation

如何获取用户定义的表类型的列信息?

EXEC sp_columns TABLENAME

让我收回表格的所有列信息。

我想对一个名为SearchList的用户定义表类型做同样的事情,并且返回大致相同的列信息。

我想得到这个,所以我可以编码生成c#中需要的数据表。

更新显示我使用的内容

select c.name as COLUMN_NAME, t.name as [TYPE_NAME], c.precision as [PRECISION], c.is_nullable as [NULLABLE], c.system_type_id, c.precision as [LENGTH]
from sys.columns c, sys.types t
where c.object_id = (select type_table_object_id from sys.table_types where name = 'SearchList')
and t.user_type_id = c.user_type_id
order by c.column_id

2 个答案:

答案 0 :(得分:19)

这将列出所有表类型及其列:

select tt.name, c.name from sys.table_types tt
inner join sys.columns c on c.object_id = tt.type_table_object_id
order by c.column_id

您可以添加where子句并根据需要选择其他列以获得所需的内容。

答案 1 :(得分:4)

我在我的项目中使用了以下查询来获取具有列名和数据类型的表类型。

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
order by tt.name