Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Редактирование функций

END

RETURN

BEGIN

Функции Multi-Statement

RETURN

RETURNS TABLE

FROM

RETURN

AS

RETURNS TABLE

(SELECT TOP 2 Товар.Название,

SUM (Поставки.Количество_ед_товара) - SUM (Продажи.Количество_ед_товара) AS Остаток

Товары INNER JOIN Поставки ON Товары.ID_товара=Поставки.Товар

INNER JOIN Продажи ON Товары.ID_товара=Продажи.Товар

ORDER BY Остаток DESC)

Использовать функцию для получения двух наименований товара с наибольшим остатком можно следующим образом:

 

SELECT Название FROM Итог()

 

Пример 7. Вывести список клиентов фирмы, фамилии которых начинаются с заданной буквы.

 

CREATE FUNCTION MyFunc (@Char char)

SELECT Фамилия, Имя, Отчество, Город

FROM Клиенты

WHERE LEFT (Фамилия, 1) = @Char;

 

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

 


Синтаксис команды для создания Multi-statement - функции:

CREATE FUNCTION Имя_функции

 

Имя параметра [ AS ] тип_параметра [= значение_по_умолчанию] [, … n]

 

RETURNS @возращаемая_переменная TABLE <определение_типа,_таблицы>

[ WITH [ ENCRYPTION ] | [ SCHEMABIUDING ] |

[ RETURNS NULL ON NULL INPUT |

CALLED ON NULL INPUT ] ]

 

[ AS ]

SQL-КОДЫ

 

Определение функций Multi-statement также практически полностью ана­логично определению функций scalar и inline, рассмотренных ранее.

 

Но есть и отличия:

1. Первое отличие связано с тем, что здесь необходимо

a. в отличие от функций inline и scalar - ука­зать имя локальной переменной типа TABLE, в которой будет возвращен результат выполнения функции;

b. определять тип возвращаемо­го значения;

c. явно определить набор столбцов, которые будут при­меняться для хранения полученных данных.

В этих функциях можно дополнительно определять индексы, ограничения целостности и т. д.

2. Второе отличие связано с завершением работы функции. Завершение ра­боты функции происходит при выполнении команды return, однако не тре­буется указание значения, которое будет возвращено как результат выполне­ния функции. Всегда возвращается содержимое переменной типа TABLE, указанной после ключевого слова returns.

Пример 777

Вывод продавцов по заданному товару и дате

 

Create function example11111111(@abc varchar(20), @bcd date)

returns @cde table (Сотрудники varchar(20) null) as

begin insert into @cde select Фамилия from Персонал inner join Продажи on Персонал.id_сотрудника = Продажи.Продавец inner join Товары on Товары.id_товара = Продажи.Товар where Товары.Название_товара =@abc and Продажи.Дата = @bcd

return end

 


Может возникнуть необходимость внести в уже созданную функцию некото­рые изменения. Для этого вы можете использовать команду alter function.

Параметры и синтаксис команды alter function аналогичны команде create function, требуется лишь заменить слово create на alter.

 

Пример 8. Команда обновления функции:

ALTER FUNCTION MyFunc (@Char char, @n int)

<== предыдущая лекция | следующая лекция ==>
Однако соз­дание табличных функций имеет свою специфику | Лекция 5. Собственно магматические месторождения
Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 234; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.