2011-06-07 8 views
4

テーブル値のパラメータとして使用するユーザー定義型をいくつか作成しました。ユーザー定義型のすべての列を選択する方法

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE 'MyTable' 

編集:私は、テーブルの列を選択することができます同じように、その列を選択することができる方法はありますはい、私はMSDNを読み込もうとしましたが、私はそこに情報が表示されません。

CREATE TABLE Placeholder(copy-and-paste all the columns from my type here) 

は、その後、私はINFORMATION_SCHEMA.COLUMNSから選択して、私が行っていたときにプレースホルダをドロップすることができます。私の現在の回避策は、次のように永続的なテーブルを作成することです。

答えて

9

これはあなたにテーブルタイプTVPTest

select c.* 
from sys.table_types as tt 
    inner join sys.columns as c 
    on tt.type_table_object_id = c.object_id 
where tt.name = 'TVPTest' 
+0

これは働いていました、ありがとう! –

1

のための列のリストを与える受け入れ答えはうまく動作しますが、私はより多くの細部を得るためにそれを少し拡張:

select 
    c.name 
    ,ColumnType = t.name 
    ,ColumnLength = c.max_length 
from sys.table_types as tt 
    join sys.columns as c 
    on tt.type_table_object_id = c.object_id  
    join sys.types t 
    on t.system_type_id = c.system_type_id 
    and t.user_type_id = c.user_type_id 
    -- and tt.type_table_object_id = c.object_id 
where tt.name = 'StatusDetail' 
関連する問題