Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
15.04.2015
Размер:
3.4 Mб
Скачать

Назначение элементов синтаксиса:

[имя_схемы.] имя_функции - имя функции,

(соответствует правилам для идентификаторов).

Дополнительно в необязательном параметре [имя_схемы.] можно указать и имя владельца функции - имя пользователя или роли, из имеющихся в БД. Если имя владельца опущено, то функция будет принадлежать пользователю, выполняющему создание функции. Имя функции

должно быть уникальным среди различных объектов БД, принадлежащих владельцу функции.

53

В параметре [имя_схемы.] не допускается указание имени БД или сервера.

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

Если необходимо создать функцию в другой БД, то сначала нужно установить эту БД в качестве текущей с помощью команды

USE имя_БД

54

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

тип_данных_параметра – допускается использование любого из поддерживаемых SQL Server типов данных (включая пользовательские), кроме типов данных timestamp, cursor, table.

[= значение_параметра_по_умолчанию]

значение, автоматически присваиваемое входному

параметру, если пользователь явно не указал

значение параметра при вызове функции.

55

[, …n] указывает на возможность задания многих параметров функции, используя синтаксис,

аналогичный описанному.

RETURNS тип_возвращаемых_данных

– указывается, какой тип данных будет иметь значение, возвращаемое функцией. Скалярные

функции могут возвращать значения любых типов

данных, за исключением типов данных timestamp,

cursor, table, text, ntext, image.

56

[ WITH <function_option> [, …n] ] - с помощью ключевого слова WITH указываются

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

<function_option>::=

{ [ENCRYPTION] | [SCHEMABINDING] |

[EXECUTE_AS_Clause] }

ENCRYPTION - задает шифрование определения функции при его сохранении;

SCHEMABINDING - запрещает удаление любых объектов, от которых зависит функция;

EXECUTE_AS - определяет контекст

безопасности функции.

57

 

[AS] после этого необязательного ключевого

слова следует определение тела функции.

BEGIN…END блок, внутри которого

находится тело_функции, включающее основные операторы функции. В теле функции выполняется различный код, обращение к другим объектам БД.

Ограничение - нельзя изменить с помощью функции состояние любого объекта в БД или самой

БД (невозможны вставка, обновление, удаление

данных в таблицах; создание, изменение, удаление объектов в БД). Для обработки данных таблиц используются табличные переменные 58и функции.

RETURN скалярное_выражение

- когда в ходе выполнения кода функции встречается ключевое слово RETURN, выполнение функции завершается, и как результат

вычисления функции возвращается значение,

указанное сразу после ключевого слова RETURN.

59

Пример 1. Рассмотрим создание функции с именем FunctionA и тремя входными параметрами:

1-й и 2-й - с типом данных bigint, 3-й - с типом

данных char(1) и значением по умолчанию *.

Функция возвращает значение с типом данных

bigint и выполняет арифметические операции:

сложение, вычитание, умножение, деление

двух целых чисел, подаваемых на вход функции. Выполняемая операция задается 3-м параметром

функции, принимающим значения: +, -, *, / .

60

Переменная @Var3 нужна, чтобы возвращать значение функции.

Примеры использования данной

ункции:

(при использовании нецелых исходных данных происходит округление).

62

Соседние файлы в папке ИПК_Занятия_ОПБД