我知道用戶定義的類型存儲在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