2013-07-03 60 views
9

如何獲取用戶定義表類型的列信息?獲取用戶定義表類型的列信息

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 
+0

這是我最後用的 –

回答

16

這將列出所有的表類型及其列:

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子句和選擇等欄目,酌情得到你需要什麼。

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