Database Programming & Design

       

Определяемые пользователями функции


DB2 обеспечивает более 100 встроенных функций для выполнения

различных вычислений над числами, строками, датами и другими

типами данных, а также дает пользователям возможность создания

собственных функций с использованием языков Си, Си++ и Бейзик.

Определяемые пользователями функции (User-Defined Functions -

UDF) могут принимать параметры и могут быть использованы в любом

выражении SQL, где предполагается наличие скалярного значения.

Поддерживается соглашение о передаче параметров UDF в

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

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

на буфера, в которые должны быть возвращены результат функции и

код статуса ее завершения. Создатель функции должен

откомпилировать реализующую ее программу и поместить выполняемый

файл в каталог, доступный серверу баз данных. После этого

пользователь должен зарегистрировать UDF в каждой базе данных,

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



CREATE FUNCTION. В этом операторе определяются типы параметров и

результата функции, указывается место расположения реализующей

программы. Описание функции помещается в таблицы системного

каталога. После этого при каждом вызове функции ее реализация

будет динамически загружаться и выполняться. Важно обеспечить

защиту выполняемого файла, поскольку он выполняется при вызове

функции без дополнительных системных проверок.

Комбинация имени функции и типов ее параметров называется

"сигнатурой" функции. SQL позволяет "перегружать" имя функции,

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

параметров. При обработке вызова функции DB2 вызывает функцию,

типы параметров которой строго соответствуют типам аргументов

вызова.



Содержание раздела