Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вся метода 3 (2).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.15 Mб
Скачать

Скалярные функции

Скалярные функции возвращают единственное значение, тип которого определяется кон­струкцией RETURNS. При этом можно использовать все скалярные типы данных, включая bigint и sql_variant.

Тип данных timestamp, пользовательские и нескалярные типы данных (например, «таб­лица» или «курсор») не поддерживаются. Тело функции, определенное в блоке BEGIN ...END, содержит набор операторов Transact-SQL, которые возвращают значение функции. Функция способна возвращать значение любого типа, кроме text, ntext, image, cursor и timestamp.

Табличные функции

Табличные функции возвращают таблицы. Существуют табличные функции двух типов: подставляемые и много операторные. У подставляемых табличных функций тело отсутствует, а возвращаемая таблица представляет собой результирующий набор единственного оператора SELECT. Тело многооператорных функций, определенное в блоке BE­GIN...END, состоит из операторов Transact-SQL, выполняющих формирование строк и размещение их в возвращаемой таблице.

Операторы из блока BEGIN...END не должны оказывать никаких побочных эффектов. Побочным эффектом функции называются любые постоянные изменения состояния ресурса, область действия которого находится за пределами функции (например, модификация таблицы базы данных). Операторам функций разрешено вносить изменения только в локальные объекты функции, такие, как локальные курсоры и переменные. Например, посредством функции нельзя модифицировать таблицы базы данных, выполнять операции над курсорами, которые не являются локальными для функции, рассылать электронную почту, модифицировать каталог и генерировать результирующий набор, возвращаемого непосредственно пользователю.

Детерминированность функций

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

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

Функции конфигурации, курсоров, метаданных, безопасности и системной статистики (а также другие встроенные функции) относятся к недетерминированными.

Типы данных

Тип данных — это атрибут, определяющий тип информации, которую может содержать объект. У всех столбцов, параметров, переменных, функций, возвращающих значения и хранимых процедур с кодами возврата есть определенные типы данных. В Transact-SQL име­ется несколько базовых типов данных, например varchar, text и int. Все данные, хранящиеся в SQL Server, должны быть совместимыми с одним из этих базовых типов. Создаваемые пользовательские типы данных всегда определяются на основе базовых типов данных.