Создайте UDT, который имеет SQL @tables в качестве своих членов - PullRequest
4 голосов
/ 28 сентября 2010

Интересно, возможно ли создать пользовательский тип CLR в SQL Server 2008, членами которого будут переменные таблицы.

Вы можете объявить переменную таблицы:

declare @foo table (row_id int not null ... );

Итак, мне нравится UDT с несколькими членами, каждый из которых представляет собой таблицу, определенную таким образом (конечно, другую таблицу), поэтому можно было бы сказать:

select id from @typed_var.table1 where ...

или

insert into @typed_var.table3(id) values (...)

У меня есть чувство, что я хочу слишком многого по этому поводу, но не могу найти однозначного Да или Нет в Интернете.
Возможно ли это вообще?

1 Ответ

1 голос
/ 09 июля 2011

Нет, это невозможно.Сервер SQL не позволит вам выбрать или вставить свойство UDT.

Я попробовал это, и получил ошибку ниже:

create type childTable as table
(
    a int,
    b int
)

create type childTable2 as table
(
    c int
)

create type parentTable as table
(
    firstChild childTable,
    secondChild childTable2
)

Msg 350, Level 16, State 1, Line 1
The column "firstChild" does not have a valid data type. A column cannot be of a user-defined table type.
...