15.7.4.1 Оператор CREATE FUNCTION для загружаемых функций
CREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] function_name
RETURNS {STRING|INTEGER|REAL|DECIMAL}
SONAME shared_library_name
Этот оператор загружает загружаемую функцию с именем function_name. (CREATE
FUNCTION также используется для создания хранимых функций; см. Раздел 15.1.17, «Операторы CREATE PROCEDURE и CREATE FUNCTION».)
Загружаемая функция — это способ расширить MySQL с помощью новой функции, которая работает как встроенная (встроенная) функция MySQL, например, ABS() или CONCAT(). См. Добавление загружаемой функции.
function_name — это имя, которое должно использоваться в операторах SQL для вызова функции. Оператор RETURNS указывает тип возвращаемого значения функции. DECIMAL — допустимое значение после RETURNS, но в настоящее время функции DECIMAL возвращают строковые значения и должны быть написаны как функции STRING.
IF NOT EXISTS предотвращает ошибку, если уже существует загружаемая функция с тем же именем. Это не предотвращает ошибку, если уже существует встроенная функция с тем же именем. IF NOT EXISTS также поддерживается для операторов CREATE FUNCTION. См. Разрешение имен функций.
Ключевое слово AGGREGATE, если задано, означает, что функция является агрегатной (групповой) функцией. Агрегатная функция работает точно так же, как встроенная агрегатная функция MySQL, например, SUM() или COUNT().
shared_library_name — это базовое имя файла общей библиотеки, содержащего код, реализующий функцию. Файл должен находиться в каталоге плагинов. Этот каталог задаётся значением системной переменной plugin_dir. Для получения дополнительной информации см. Раздел 7.7.1, «Установка и удаление загружаемых функций».
CREATE
FUNCTION требует привилегии INSERT для схемы системы mysql, поскольку она добавляет строку в таблицу системы mysql.func для регистрации функции.
CREATE
FUNCTION также добавляет функцию в таблицу Performance Schema user_defined_functions, которая предоставляет сведения о времени выполнения установленных загружаемых функций. См. Раздел 29.12.22.10, «Таблица user_defined_functions».
Как и таблица системы mysql.func, таблица Performance Schema user_defined_functions перечисляет загружаемые функции, установленные с помощью CREATE
FUNCTION. В отличие от таблицы mysql.func, таблица user_defined_functions также перечисляет загружаемые функции, установленные автоматически компонентами сервера или плагинами. Это различие делает user_defined_functions предпочтительнее mysql.func для проверки установленных загружаемых функций.
Во время нормальной последовательности запуска сервер загружает функции, зарегистрированные в таблице mysql.func. Если сервер запускается с параметром --skip-grant-tables, зарегистрированные в таблице функции не загружаются и недоступны.
Для обновления общей библиотеки, связанной с загружаемой функцией, выполните оператор DROP
FUNCTION, обновите общую библиотеку, а затем выполните оператор CREATE
FUNCTION. Если вы сначала обновите общую библиотеку, а затем используете DROP
FUNCTION, сервер может неожиданно завершить работу.
© 2025 Oracle
Licensed under the GPLv2 License.