14

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

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
4

2 回答 2

23

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

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 子句并根据需要选择其他列来获得所需的内容。

于 2013-07-03T15:39:01.377 回答
5

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

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
于 2014-04-08T18:22:27.947 回答