Лабораторная работа Пользовательские функции


Рис. 12.6. Появится результат выполнения новой скалярной пользовательской функции: 2008-12-31



бет4/4
Дата10.03.2022
өлшемі0,85 Mb.
#27440
түріЛабораторная работа
1   2   3   4
Рис. 12.6.

Появится результат выполнения новой скалярной пользовательской функции: 2008-12-31 ( рис. 12.6).



Теперь перейдем к созданию табличных пользовательских функций. Для создания табличной пользовательской функции в обозревателе объектов, в БД "Students", в папке "Programmability", щелкните ПКМ по папке "Functions" и в появившемся меню выберите пункт "New/Table-valued Function". Появится окно новой табличной пользовательской функции ( рис. 12.7)


увеличить изображение


Рис. 12.7.

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



  1. Область определения имени функции (Inline_Function_Name);

  2. Параметры, передаваемые в процедуру ( @Param1, @Param2 );

  3. RETURNS TABLE показывает что функция является табличной, то есть возвращает таблицу;

  4. Тело самой пользовательской функции, состоит из команды 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.





Достарыңызбен бөлісу:
1   2   3   4




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет