Рис. 12.6.
Появится результат выполнения новой скалярной пользовательской функции: 2008-12-31 ( рис. 12.6).
Теперь перейдем к созданию табличных пользовательских функций. Для создания табличной пользовательской функции в обозревателе объектов, в БД "Students", в папке "Programmability", щелкните ПКМ по папке "Functions" и в появившемся меню выберите пункт "New/Table-valued Function". Появится окно новой табличной пользовательской функции ( рис. 12.7)
увеличить изображение
Рис. 12.7.
Рассмотрим структуру кода табличной пользовательской функции. Табличная пользовательская функция состоит из следующих разделов:
Область определения имени функции (Inline_Function_Name);
Параметры, передаваемые в процедуру ( @Param1, @Param2 );
RETURNS TABLE показывает что функция является табличной, то есть возвращает таблицу;
Тело самой пользовательской функции, состоит из команды SELECT языка программирования запросов T-SQL.
Остальные разделы табличной пользовательской функции аналогичны таким же разделам хранимых процедур и скалярных пользовательских функций.
В заключение рассмотрим создание табличной пользовательской функции "Функция отбора по возрасту", вычисляющих текущий возраст студентов в зависимости от их даты рождения. В окне новой пользовательской функции ( рис. 12.7) наберите следующий код ( рис. 12.8):
увеличить изображение
Рис. 12.8.
Из кода представленного на рис. 12.8 видно, что данная табличная функция не имеет параметров и реализуется командой
SELECT ФИО, [Дата рождения], Возраст = DateDiff(yy, [Дата рождения], GetDate())
FROM Студенты
Из вышепредставленной команды видно, что из таблицы "Студенты" отображаются поля "ФИО" и "Дата рождения", а также вычислимое поле "Возраст". Поле "Возраст" вычисляется при помощи встроенной функции DateDiff вычисляющей различие между датами в определенных единицах измерения (частях даты) и имеющей следующий синтаксис:
DateDiff(<часть даты>, <начальная дата>, <конечная дата>).
Здесь "часть даты" - это закодированные специальными символами единицы измерения (часть даты) (yy - год, mm - месяц, dd - день), "начальная дата" - дата начала периода и "конечная дата" - дата конца периода. В нашем случае в качестве начальной даты берем дату рождения студента, а в качестве конечной даты берем текущую дату (функция GetDate() ).
Для создания функции, выполним вышеописанный код, как и в случае с предыдущей функцией. После появления сообщения "Command(s) completed successfully." закройте окно с кодом.
Проверим работоспособность новой табличной пользовательской функции. Создайте новый пустой запрос, затем в окне с пустым запросом наберите команду SELECT * FROM dbo.[Функция отбора по возрасту]() и нажмите кнопку
на панели инструментов ( рис. 12.9).
увеличить изображение
Рис. 12.9.
В нижней части окна появиться таблица с фамилиями, датами рождения и возрастом студентов на данный момент времени ( рис. 12.9).
Замечание: Обратите внимание на тот факт, что мы работаем с табличной функцией как с обыкновенной таблицей.
На этом мы заканчиваем рассмотрение пользовательских функций и переходим к рассмотрению целостности данных, диаграмм и триггеров. По окончании выполнения главы 6 обозреватель объектов будет иметь следующий вид ( рис. 12.10):
Рис. 12.10.
Достарыңызбен бөлісу: |