Однако создание табличных функций имеет свою специфику.
RETURNS TABLE
Функции Inline
DECLARE@kol INT
END
В качестве входного параметра используется дата. Функция возвращает значение целоготипа, полученное из оператора SELECT путем суммирования количества товара из таблицы Сделка. Условием отбора записей для суммирования является равенство даты сделки значению входного параметра функции.
Приведем фрагмент кода, в котором происходит обращение к функции пользователя: определим количество товара, поступившего за 02.02.11:
SET@kol = Пост_дата(' 02.02.11')
SELECT @kol
Создание и изменение функции этого типа выполняется с помощью команды:
Основная часть параметров, используемых при создании табличных функций, аналогична параметрам скалярной функции.
1. Оператор SELECTявляется единственной командой функции.
2. После ключевого слова RETURNS всегда должно быть ключевое слово TABLE. Таким образом, функция данного типа должна строго возвращать значениетипа данных table.
3. Структура возвращаемого значения типа TABLE не указывается явно при описании собственно типа данных. Вместо этого сервер будет автоматически использовать для возвращаемого значенияtable структуру, возвращаемую запросом SELECT.
4. Особенность функции данного типа заключается в том, что структура значения table создается автоматически в ходе выполнения запроса, а не указывается явно при определении типа после ключевого слова RETURNS.
5. Возвращаемое функцией значение типа TABLE может быть использовано непосредственно в запросе, т.е. в разделе FROM.
Пример 2.Создать и применить функцию табличного для определения двух наименований товара с наибольшим остатком.
CREATE FUNCTIONИтог( )
(SELECT TOP 2 Товар.Название,
SUM(Поставки.Количество_ед_товара) - SUM(Продажи.Количество_ед_товара) AS Остаток