Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / ЛЕКЦІЯ 12.ppt
Скачиваний:
29
Добавлен:
30.05.2020
Размер:
116.74 Кб
Скачать

ЛЕКЦІЯ 12

ТЕМА: Функції користувача та вбудовані функції

План

1 Поняття функції користувача

2 Функції Scalar

3 Функції Inline

4 Функції Multi-statement

5 Вбудовані функції

Математичні функції Рядкові функції

Функції для роботи з датою і часом

Поняття функції користувача

Функції користувача є самостійними об'єктами бази даних, такі, наприклад, як збережені процедури або тригери.

Функція користувача розташовується в певній базі даних і доступна тільки в її контексті.

Класи функцій користувача

Scalar – функції повертають звичайне скалярне значення;

Inline – функції містять всього одну команду SELECT і повертають користувачу набір даних у вигляді значення типу даних TABLE

Multi-statement – функції також повертають користувачу значення типу даних TABLE, що містить набір даних, проте в тілі функції знаходиться безліч команд SQL (INSERT, UPDATE і т.д.).

Функції Scalar

<визначення_скаляр_функції>::=

{CREATE | ALTER } FUNCTION [власник.] ім’я_функції ( [ { @ім’я_параметра скаляр_тип_даних

[ = default ] } [,...n] ] ) RETURNS скаляр_тип_даних

[WITH {ENCRYPTION | SCHEMABINDING} [,...n] ] [AS]

BEGIN <тіло_функції>

RETURN скаляр_вираз END

Створити і застосувати функцію скалярного типу для обчислення сумарної кількості товару, що поступив за певну дату. Власник функції – користувач з ім'ям user1.

CREATE FUNCTION user1.sales(@data DATETIME) RETURNS INT

AS BEGIN

DECLARE @c INT

SET @c=(SELECT SUM(кількість) FROM Операція

WHERE дата=@data) RETURN (@c)

END

Функції Inline

<визначення_табл_функції>::= {CREATE | ALTER } FUNCTION [власник.]

ім’я_функції ( [ { @ім’я_параметра скаляр_тип_даних

[ = default ] } [,...n] ] ) RETURNS TABLE

[ WITH {ENCRYPTION | SCHEMABINDING} [,...n] ]

[AS]

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

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

залишком

CREATE FUNCTION user1.itog() RETURNS TABLE

AS

RETURN (SELECT TOP 2 Товар.Назва

FROM Товар INNER JOIN Склад ON Товар.КодТовара=Склад.КодТовара

ORDER Склад.Залишок DESC)

Функції Multi-statement

<визначення_мульти_функції>::= {CREATE | ALTER }FUNCTION [власник.]

ім’я_функції ( [ { @ім’я_параметра скаляр_тип_даних [=default]}[,...n]])

RETURNS @ім’я_параметра TABLE <визначення_таблиці>

[WITH {ENCRYPTION | SCHEMABINDING} [,...n] ] [AS]

BEGIN <тіло_функції> RETURN

END

Підготовка даних

CREATE TABLE emp_mgr

(emp CHAR(2) PRIMARY KEY -- співробітник

mgr CHAR(2)) -- керівник

emp mgr

аNULL

bа

са

dа

ef

fb

gb

i с

кd

Соседние файлы в папке лекции