Как выбрать все столбцы для определенного пользователем типа - PullRequest
4 голосов
/ 07 июня 2011

Я создал несколько пользовательских типов для использования в качестве табличных параметров. Есть ли способ, которым я мог бы выбрать их столбцы, так же, как я могу выбрать столбцы для таблицы:

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 и удалить заполнитель, когда я закончу.

Ответы [ 2 ]

9 голосов
/ 07 июня 2011

Это даст вам список столбцов для типа таблицы 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'
1 голос
/ 21 декабря 2011

Принятый ответ работает хорошо, но я немного его расширил, чтобы получить более подробную информацию:

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...