2008 SQL Server - Как я возвращаю Пользовательский Тип Таблицы из Табличной Функции?

Вот мой пользовательский тип таблицы...

CREATE TYPE [dbo].[FooType] AS TABLE(
 [Bar] [INT],
)

Это - то, что я должен был сделать в своей табличной функции для возврата типа:

CREATE FUNCTION [dbo].[GetFoos]
RETURN @FooTypes TABLE ([Bar] [INT])
INSERT INTO @FooTypes (1)
RETURN

В основном я должен повторно объявить свое определение типа в Операторе возврата функции. Нет ли способ, которым я могу просто объявить тип в Операторе возврата?

Я думал бы, что это будет работать:

CREATE FUNCTION [dbo].[GetFoos]
RETURN @FooTypes [FooType]
INSERT INTO @FooTypes (1)
RETURN

Не может найти справку на MSDN/Google относительно этого.... никем?

Править

Я снял выделение со своего ответа, и ударяющий этот вопрос - поскольку я встречаюсь с тем же сценарием 6 несколько месяцев спустя.

У кого-либо есть какая-либо идея, если возможно возвратить определяемый пользователем тип таблицы из табличной функции? В противном случае есть ли лучшее обходное решение кроме того, что я сделал? (повторно объявите тип снова).

42
задан RPM1984 16 December 2010 в 08:41
поделиться

2 ответа

Хорошо, значит, это невозможно.

Достаточно просто дублировать определение таблицы в возвращаемом типе (с использованием скриптов).

Тем не менее - надеюсь, эта проблема будет исправлена ​​в следующей версии SQL Server.

8
ответ дан 26 November 2019 в 23:57
поделиться

Я не верю, что это возможно. Вы не можете использовать UDTT в качестве возвращаемого типа функции со скалярным значением, потому что это не скалярное значение. Вы также не можете заменить табличное объявление функции с табличным значением на UDTT. Повторение определения таблицы кажется единственным вариантом. Если бы мы знали, почему вы это делаете, возможно, мы смогли бы найти альтернативу.

0
ответ дан 26 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: