Однако создание табличных функций имеет свою специфику.
1. Оператор SELECTявляется единственной командой функции.
2. После ключевого слова RETURNS всегда должно быть ключевое слово TABLE. Таким образом, функция данного типа должна строго возвращать значениетипа данных table.
3. Структура возвращаемого значения типа TABLE не указывается явно при описании собственно типа данных. Вместо этого сервер будет автоматически использовать для возвращаемого значенияtable структуру, возвращаемую запросом SELECT.
4. Особенность функции данного типа заключается в том, что структура значения table создается автоматически в ходе выполнения запроса, а не указывается явно при определении типа после ключевого слова RETURNS.
5. Возвращаемое функцией значение типа TABLE может быть использовано непосредственно в запросе, т.е. в разделе FROM.
Пример 2.Создать и применить функцию табличного для определения двух наименований товара с наибольшим остатком.
CREATE FUNCTIONИтог( )
RETURNS TABLE
AS
RETURN
(SELECT TOP 2 Товар.Название,
SUM(Поставки.Количество_ед_товара) - SUM(Продажи.Количество_ед_товара) AS Остаток
FROM
ТоварыINNER JOINПоставкиONТовары.ID_товара=Поставки.Товар
INNER JOINПродажи ONТовары.ID_товара=Продажи.Товар
ORDER BYОстаток DESC)
Использовать функцию для получения двух наименований товара с наибольшим остатком можно следующим образом:
SELECT Название FROM Итог()
Пример 3. Вывести список клиентов фирмы, фамилии которых начинаются с заданной буквы.
CREATE FUNCTION MyFunc ( @Char char)
Дата добавления: 2015-08-26; просмотров: 508;