Определяемые пользователями функции
DB2 обеспечивает более 100 встроенных функций для выполнения
различных вычислений над числами, строками, датами и другими
типами данных, а также дает пользователям возможность создания
собственных функций с использованием языков Си, Си++ и Бейзик.
Определяемые пользователями функции (User-Defined Functions -
UDF) могут принимать параметры и могут быть использованы в любом
выражении SQL, где предполагается наличие скалярного значения.
Поддерживается соглашение о передаче параметров UDF в
поставляемую пользователем программу реализации функции. Этой
программе передаются входные параметры функции, а также указатели
на буфера, в которые должны быть возвращены результат функции и
код статуса ее завершения. Создатель функции должен
откомпилировать реализующую ее программу и поместить выполняемый
файл в каталог, доступный серверу баз данных. После этого
пользователь должен зарегистрировать UDF в каждой базе данных,
где предполагается ее использование, путем выполнения оператора
CREATE FUNCTION. В этом операторе определяются типы параметров и
результата функции, указывается место расположения реализующей
программы. Описание функции помещается в таблицы системного
каталога. После этого при каждом вызове функции ее реализация
будет динамически загружаться и выполняться. Важно обеспечить
защиту выполняемого файла, поскольку он выполняется при вызове
функции без дополнительных системных проверок.
Комбинация имени функции и типов ее параметров называется
"сигнатурой" функции. SQL позволяет "перегружать" имя функции,
т.е. определять несколько функций с одним именем и разными типами
параметров. При обработке вызова функции DB2 вызывает функцию,
типы параметров которой строго соответствуют типам аргументов
вызова.