Если тип возвращаемого значения моей функции Table-Valued является одной из моих существующих таблиц, например TBL, мне все еще нужно записывать все имена, типы и длины столбцов в сигнатуре функции или есть способ сказать, что эта функция возвращает таблицу TBL?Тип возвращаемого значения для таблицы-значения
Быстрый пример: Скажем, у меня есть таблица TBL с двумя полями (собственно табличным я работаю с намного шире):
TBL
{
ID int NOT NULL
Name varchar(100) NOT NULL
}
Моей таблицей многозначной функции выполняет некоторую сложную фильтрацию на столе и возвращает соответствующие строки без каких-либо прогнозов столбцов, т. е. возвращаются целые строки. В настоящее время функция выглядит следующим образом:
CREATE FUNCTION GetHistory
(
--some params
)
RETURNS
@RetVal TABLE <<<<<
( <<<<<
ID int NOT NULL, <<<<<
Name varchar(100) NOT NULL <<<<<
) <<<<<
AS
BEGIN
--Logic here
RETURN;
END
Как вы видите, я копирую всю структуру моей таблицы в предложении RETURNS
. Есть ли способ, чтобы я мог просто сказать SQL Server, что эта функция возвращает структуру TBL вместо написания всех столбцов здесь? Что-то вроде:
CREATE FUNCTION GetHistory
(
--some params
)
RETURNS
@RetVal TBL <<<<<<<
AS
BEGIN
--Logic here
RETURN;
END
(Целевая платформа SQL Server 2008 R2 и выше)
И как вы ожидаете, что FUNCTION справится с изменением определения TBL? – Paparazzi
@Blam: Как взгляды имеют отношение к изменению определения TBL? – dotNET
Почему вы спрашиваете меня о просмотрах? Если у вас есть вопрос о мнениях, задайте другой вопрос. Этот вопрос, конечно, не является ответом на мой вопрос/ – Paparazzi