Главная » Microsoft SQL Server, Базы данных » Создание пользовательских функций

0

Пользовательские функции были представлены в версии SQL Server 2000, но поначалу были как-то вяло восприняты сообществом пользователей SQL Server.

Затем сообщество открыло для себя, что с помощью пользовательских функций можно внедрить в запросы обработку сложной логики и таким образом решать задачи, для которых прежде требовалось использование курсора. В результате пользовательские функции стали излюбленным инструментом всех серьезных разработчиков приложений для SQL Server.

Достоинства пользовательских функций перечислены ниже.

?               С их помощью можно внедрить в запросы сложную логику.

?               Создавая новые функции, можно проектировать сложные выражения.

?               Эти функции обладают всеми достоинствами представления, поскольку могут использоваться в предложении FROM инструкции SELECT и в выражениях и могут быть задействованы в схеме. К тому же пользовательские функции могут принимать параметры, в то время как представления — нет.

?               Они обладают достоинствами хранимых процедур, так как могут быть скомпилированы и оптимизированы таким же способом.

Главным аргументом противников пользовательских функций является вопрос переносимости.

Пользовательские функции привязаны к SQL Server, и любую базу данных, использующую множество таких функций, будет сложно или даже невозможно перенести на другую платформу СУБД без существенной переработки. Эта задача усложняется тем, что также должны быть переписаны и все инструкции SELECT, в которые внедрены пользовательские

функции. Если в будущем планируется развертывание базы данных на других платформах, то лучше заменить все пользовательские функции представлениями или хранимыми процедурами. Пользовательские функции подразделяются на три типа (рис. 2.1).

?               Скалярные, возвращающие одно значение.

?               Внедренные табличные, аналогичные представлениям.

?               Сложные табличные, создающие в программном коде результирующий набор данных.

Puc. 22.1. В окне Object Explorer утилиты Management Studio перечислены все пользовательские функции, определенные в базе данных, с разделением на скалярные и табличные

Пользовательские функции в версии SQL Server 2005 были улучшены в двух отношениях. Во-первых, несмотря на то, что код CLR нельзя назвать лучшим инструментом для серверных программ, работающих с данными, в некоторых пользовательских функциях лучше использовать все-таки его. Во-вторых, табличные пользовательские функции могут принимать параметры в виде строк, аналогично тому, как коррелированные подзапросы работают с внешними запросами. Это позволяет разрешить некоторые сложные проблемы.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии