Создадим "функцию отбора по возрасту" (рис. 3.7.1)
Рис. 3.7.1 Вид создания функций
В окне новой функции наберём код как показано на рис. 3.7.2.
Рис. 3.7.2. Окно создания функций в SQL запросе
Из рис. 3.7.1 видно, что создаваемая функция "Функция отбора по возрасту" выполняется после записи ввода всей записи представленной в данной окне.
Данная функция будет считать сколько лет следователю, находящемся в базе данных «уголовное_дело». Проверяю создалась ли функция.(рис. 3.7.3).
Рис. 3.7.3.
Появится следующее окно. (рис. 3.7.4):
Рис. 3.7.4. dbo.Функция отбора по возрасту
В режиме скрипта SQL запрос выглядит так:
CREATE FUNCTION [dbo].[Функция отбора по возрасту]
(
-- Add the parameters for the function here
)
RETURNS TABLE
AS
RETURN
(
SELECT ФИО, [дата_рождения], Возраст = DateDiff(yy, [дата_рождения], GetDate()) FROM следователь
)
Просмотрим созданную функцию через запрос. (рис. 3.7.5)
Рис. 3.7.5. Окно созданных функций
Добавим запрос "функцию отбора по возрасту".
Появится окно конструктора запросов (рис. 3.7.6).
Рис. 3.7.6. Окно выбранной функции
Определим поля, отображаемые при выполнении запроса. Определим отображаемые поля нашего запроса, как это показано на рис. 3.7.6, отобразим поле "ФИО"и "Возраст".
Проверим запрос на работоспособность и сохраняем его. Результат выполнения запроса появиться в виде таблицы в области результата (рис. 3.7.7).
Запрос появится в папке "Views" БД "уголовное_дело" в обозревателе объектов (рис. 3.7.7).
Рис. 3.7.7. Проверка созданной функции
Проверим работоспособность созданного запроса вне конструктора запросов. Результат представлен на рис. 3.7.7.
Данный запрос при выполнении дает информацию возраст следователю.
В режиме SQL запрос выглядит так:
SELECT TOP (100) PERCENT ФИО, Возраст
FROM dbo.[Функция отбора по возрасту]() AS [Функция отбора по возрасту_1]
ORDER BY ФИО, Возраст DESC
В режиме скрипта SQL запрос выглядит так (как показано на рис. 3.7.8.)
Рис. 3.7.8. Окно функции "Function Возраст_следователя"через скрипт
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[Возраст_следователя]
AS
SELECT TOP (100) PERCENT ФИО, Возраст
FROM dbo.[Функция отбора по возрасту]() AS [Функция отбора по возрасту_1]