Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Inline функции



Создание функции этого типа выполняется с помощью команды:

CREATE FUNCTION [ имя_схемы. ] имя _функции

([ { @имя_параметра [ AS ][ имя_схемы. ] тип_данных

[ = default ] [ READONLY ] } [,...n ] ])

RETURNS TABLE

[ WITH {ENCRYPTION | SCHEMABINDING | EXECUTE AS … },[…n] ]

[ AS ]

RETURN [(] SELECT_оператор [)]

Основная часть параметров, используемых при создании табличных функций, аналогична параметрам скалярной функции. Тем не менее, создание табличных функций имеет свою специфику.

После ключевого слова RETURNS всегда должно указываться ключевое слово TABLE. Таким образом, функция данного типа должна строго возвращать значение типа данных TABLE. Структура возвращаемого значения типа TABLE не указывается явно при описании собственно типа данных. Вместо этого сервер будет автоматически использовать для возвращаемого значения TABLE структуру, возвращаемую запросом SELECT, который является единственной командой функции.

Возвращаемое функцией значение типа TABLE может быть использовано непосредственно в запросе, т.е. в разделе FROM.

Пример inline функции

Создать и применить функцию табличного типа для определения номеров счетов с наименьшей прибылью за последние K дней.

Используется общетабличное представление.

CREATE FUNCTION sales1(@k int =30)

RETURNS TABLE

AS

RETURN

WITH

pr1([номер счета],summa)

AS (SELECT [номер счета], sum(сумма) as summa

FROM R2 WHERE

ABS(DATEDIFF(DAY,GETDATE(),[Дата проведения]))<@k

GROUP BY [номер счета]),

pr2(min_sum)

AS (SELECT MIN(summa) as min_sum FROM pr1)

SELECT [номер счета] FROM pr1,pr2 where summa = pr2.min_sum

GO

-- обращение к функции

SELECT * FROM Test.dbo.sales1(25)





Дата публикования: 2015-09-17; Прочитано: 210 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...