Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Раздел III. Создание и работа с определяемыми пользователем функциями.
Помимо использования встроенных функций, пользователи могут создавать свои собственные функции. Эти функции в отличие от встроенных являются обычными объектами базы данных, т.е. имеют своего владельца, который может предоставлять другим пользователям право на их вызов. Имеется три типа определяемых пользователем функций. 1). Функции типа Scalar. Функции этого типа являются наиболее привычными и возвращают скалярное значение любого из типов данных, поддерживаемых сервером, за исключением text, ntext, image, timestamp, table и cursor. Команда создания функции имеет следующий синтаксис (см. [1], стр. 1115):
CREATE FUNCTION [ owner_name. ] function_name RETURNS scalar_return_data_type [ WITH < function_option> [ [, ]... n ] ] [ AS ] BEGIN
É /* Функция типа Scalar, возвращающая курс валюты по ее коду */ CREATE FUNCTION fn_ВыборКурсаВалюты (@Код CHAR(3)) RETURNS SMALLMONEY BEGIN DECLARE @Курс SMALLMONEY --объявляем локальную переменную @Курс SELECT @Курс = КурсВалюты FROM Валюта WHERE КодВалюты = @Код RETURN @Курс --функция возвращает значение переменной @Курс END GO /* Проверка работы функции func_ВыборКурсаВалюты */ DECLARE @Code CHAR(3) SET @Code = 'USD' SELECT @Code AS [Код валюты], dbo.fn_ВыборКурсаВалюты(@Code) AS [Курс валюты] GO Ç Примечание. При вызове скалярной функции, ее имя должно быть дополнено именем владельца или именем пользователя, которому предоставлено право на вызов этой функции. 2). Функции типа Inline Table-valued. Эти функции всегда возвращают значения типа данных table (таблица). Тело функции всегда состоит из одной команды SELECT. Особенностью функций этого типа является то, что код функции при выполнении программы вставляется непосредственно в исполняемый набор команд, т.е. происходит не вызов функции, а встраивание. Команда создания функции имеет следующий синтаксис (см. [1], стр. 1117):
CREATE FUNCTION [ owner_name. ] function_name RETURNS TABLE [ WITH < function_option > [ [, ]... n ] ] [ AS ] RETURN [ ( ] select-stmt [ ) ]
É /* Функция типа Inline Table-valued, возвращающая заказы по валюте*/ CREATE FUNCTION fn_ВыборЗаказовПоВалюте (@Код CHAR(3)) RETURNS TABLE AS RETURN SELECT Заказ.*, Товар.КодВалюты FROM Заказ INNER JOIN Товар ON Заказ.КодТовара = Товар.КодТовара WHERE Товар.КодВалюты = @Код GO /* Проверка работы функции func_ВыборЗаказовПоВалюте */
SELECT * FROM fn_ВыборЗаказовПоВалюте('USD') GO Ç
3). Функции типа Multi-statement Table-valued. Эти функции, как и функции предыдущего типа, возвращают значение типа table, однако тело функции этого типа может состоять более чем из одной команды, что дает возможность использовать в теле функции транзакции, курсоры, вызывать хранимые процедуры и т.д. Команда создания функции имеет следующий синтаксис (см. [1], стр. 1118):
CREATE FUNCTION [ owner_name. ] function_name RETURNS @ return_variable TABLE < table_type_definition > [ WITH < function_option > [ [, ]... n ] ] [ AS ] BEGIN
< function_option >::=
< table_type_definition >:: =
É /* Функция типа Multi-statement Table-valued, возвращающая таблицу с новым столбцом */ CREATE FUNCTION fn_ВыборРегионовСтраны (@Страна VARCHAR(20)) RETURNS @CountryRegions TABLE ( КодРегиона INT PRIMARY KEY, Страна VARCHAR(20) NOT NULL, Город VARCHAR(20) NULL, ОбластнойЦентр BIT NULL) BEGIN -- Объявляем локальную переменную @rowset типа таблица DECLARE @rowset TABLE ( КодРегиона INT PRIMARY KEY, Страна VARCHAR(20) NOT NULL, Область VARCHAR(20) NULL, Город VARCHAR(20) NULL,
|
|||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 162; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.137.218 (0.006 с.) |