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.18, «Заявления 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.11, «Таблица 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.