Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
15.04.2015
Размер:
3.4 Mб
Скачать

Пример 2. Функция Goods для вычисления суммарного количества товара определенного типа. Имя владельца функции - user1.

CREATE FUNCTION user1.Goods(@type char(15)) RETURNS INT

AS BEGIN

DECLARE @c INT

SET @c=(SELECT SUM(Количество) FROM Товары

WHERE Тип_товара=@type)

RETURN (@c)

 

END

63

 

Входной параметр - тип товара . Функция возвращает значение целого типа, полученное из оператора SELECT при суммировании количества товара (по столбцу Количество) из таблицы Товары. Условие отбора записей для суммирования

– совпадение типа товара (столбец Тип_товара таблицы Товары) со значением входного параметра

функции.

Пример обращения к функции - определим количество товара с типом Шины:

DECLARE @kol INT

SET @kol = user1.Goods('Шины')

SELECT @kol

64

 

8.2.2. Внедренные табличные функции

(функции Inline)

Внедренная табличная функция не имеет в своем теле блока BEGIN…END – вместо этого возвращается результирующий набор данных инструкции SELECT в виде таблицы с

заданным именем.

Общий синтаксис внедренной табличной функции:

65

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

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

[ = значение_параметра_по_умолчанию ] }

[, …n] ] )

RETURNS TABLE

[ WITH <function_option> [, …n] ]

[ AS ]

RETURN [ ( ] инструкция_SELECT [ ) ]

66

Основная часть параметров соответствует

параметрам скалярных функций.

Особенность функции Inline: - структура

возвращаемого значения с типом данных table не

указывается явно. Вместо этого для возвращаемого табличного значения автоматически используется результат запроса SELECT (единственная команда функции Inline).

Код этого запроса задается параметром

инструкция_SELECT и может быть дополнительно помещен в круглые скобки.

67

Возвращаемое функцией значение table

можно использовать непосредственно в

запросе, то есть в разделе FROM запроса

можно указывать имя функции со всеми

входными параметрами.

Таким образом, функция Inline возвращает в

качестве результата таблицу, которую можно

использовать, как любую другую таблицу БД.

68

Пример 1. Рассмотрим создание и

использование функции Inline с именем

FunctionB, которая возвращает список фамилий

и имен студентов определенного факультета

(факультет задается в качестве аргумента

функции) из таблицы Студенты:

69

(функция содержит одну инструкцию SELECT после ключевого слова RETURN).

Пример вызова этой функции:

Пример 2. Функция, которая возвращает

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

CREATE FUNCTION GetPrice() RETURNS TABLE

[ AS ] RETURN

(SELECT Дата, Название_товара, Цена, Количество, Цена*Количество AS Стоимость

FROM Товары)

71

Для примера создана функция без параметров, в

этом случае после имени функции задаются пустые

круглые скобки.

Для функции данного типа после RETURN

нужно в скобках указать запрос, результат которого и

будет возвращаться функцией. У всех полей запроса

должны быть имена (при отсутствии имен,

например, для вычисляемых выражений, они задаются с помощью слова AS).

72

Соседние файлы в папке ИПК_Занятия_ОПБД