Лекция 11. Функции пользователя
Дается определение функций пользователя, приводятся примеры их
создания и использования. Рассматриваются различные типы функций.
Анализируются встроенные функции языка SQL.
Ключевые слова: хранимая процедура, функция пользователя, скаляр-
ная функция пользователя, входной параметр, табличная функция
пользователя, табличный тип данных, мультитабличная функция,
встроенные функции, математические функции, строковые функции,
функции даты/времени.
Понятие функции пользователя
При реализации на языке SQL сложных алгоритмов, которые могут
потребоваться более одного раза, сразу встает вопрос о сохранении разра-
ботанного кода для дальнейшего применения. Эту задачу можно было бы
реализовать с помощью хранимых процедур, однако их архитектура не
позволяет использовать процедуры непосредственно в выражениях, т.к.
они требуют промежуточного присвоения возвращенного значения пере-
менной, которая затем и указывается в выражении. Естественно, подоб-
ный метод применения программного кода не слишком удобен. Многие
разработчики уже давно хотели иметь возможность вызова разработанных
алгоритмов непосредственно в выражениях.
Возможность создания пользовательских функций была предоста-
влена в среде MS SQL Server 2000. В других реализациях SQL в распоря-
жении пользователя имеются только встроенные функции, которые
обеспечивают выполнение наиболее распространенных алгоритмов:
поиск максимального или минимального значения и др.
Функции пользователя представляют собой самостоятельные объек-
ты базы данных, такие, например, как хранимые процедуры или триггеры.
Функция пользователя располагается в определенной базе данных и дос-
тупна только в ее контексте.
В SQL Server имеются следующие классы функций пользователя:
• Scalar – функции возвращают обычное скалярное значение, каждая
может включать множество команд, объединяемых в один блок с
помощью конструкции BEGIN…END;
• Inline – функции содержат всего одну команду SELECT и возвраща-
ют пользователю набор данных в виде значения типа данных table;
• Multi-statement – функции также возвращают пользователю значение
типа данных table, содержащее набор данных, однако в теле функции
237
Лекция 11 Функции пользователя