MySQL
MySQL не поддерживает инструкцию ALTER FUNCTION, а также инструкции CREATE PROCEDURE и ALTER PROCEDURE.
Пользовательские функции, которые создаются в базе данных MySQL, по сути являются вызовами внешних функций.
CREATE [AGGREGATE] FUNCTION имя_функции RETURNS {STRING | REAL | INTEGER) SONAME имя_библиотеки_коллективного_пользования;
Где:
CREAТЕ [AGGREGATEJ FUNCTION имя_функции
Создается внешняя функция с именем имя_функции. Имя не может быть длиннее 64 символов. Модуль будет сохранен в директории mysql2/udf с расширением UDF. Если указано предложение AGGREGATE, то пользовательская функция должна возвращать агрегатное значение, такое, как SUMQ или AVGQ.
RETURNS {STRING REAL INTEGER}
Возвращаемое значение представляет собой тип STRING (символьные данные), REAL (значения с плавающей точкой) или INTEGER (целые числа).
SONAME имя_библиотечной_программы_коллективного_пользования
Указывается имя программы на C/C++, которая выполняет обработку. Данная программа коллективного использования может быть откомпилирована и встроена в MySQL или же может функционировать как независимая связываемая программа.
Созданную пользовательскую функцию MySQL можно вызывать как любую другую функцию, такую, как ABSQ или SOUNDEX().
Реализация инструкции CREATE FUNCTION в MySQL зависит от работы процедурного кода C/C++ в операционной системе, поддерживающей динамическую загрузку. Название программы C/C++ указывается в параметре библиотечной_программы_коллективного_пользования. Функция может быть скомпилирована прямо с сервером MySQL, тогда она будет доступна постоянно, или же может быть динамически вызываемой программой. Например, на сервере может находиться блок кода, используемый в следующей инструкции, создающей пользовательскую функцию.
CREATE FUNCTION fincLradius RETURNS INT SONAME ‘radius.so’