Spec-Zone .ru
спецификации, руководства, описания, API
|
CREATE [AGGREGATE] FUNCTIONfunction_name
RETURNS {STRING|INTEGER|REAL|DECIMAL} SONAMEshared_library_name
Определяемая пользователем функция (UDF) является способом расширить MySQL с помощью новой функции, которая
работает как собственная (встроенная) функция MySQL такой как ABS()
или CONCAT()
.
function_name
имя, которое должно использоваться в SQL-операторах,
чтобы вызвать функцию. RETURNS
пункт указывает на тип возвращаемого значения
функции. DECIMAL
юридическое значение после RETURNS
, но в
настоящий момент DECIMAL
строковые значения возврата функций и должны быть записаны как STRING
функции.
shared_library_name
базовое имя совместно используемого объектного
файла, который содержит код, который реализует функцию. Файл должен быть расположен в сменном каталоге. Этот
каталог дается значением plugin_dir
системная переменная. Для получения дополнительной информации см.
Раздел 22.3.2.5, "Компилируя и
Устанавливая Определяемые пользователем Функции".
Чтобы создать функцию, Вы должны иметь INSERT
полномочие для mysql
база данных. Это необходимо потому что CREATE FUNCTION
добавляет строка к mysql.func
системная таблица, которая записывает имя функции, вводит, и совместно использованное имя библиотеки. Если у Вас
нет этой таблицы, следует выполнить mysql_upgrade команду, чтобы создать ее. См. Раздел
4.4.7, "mysql_upgrade — Таблицы MySQL Check и Upgrade"
.
Активная функция является той, которая была загружена CREATE FUNCTION
и не удаленный с DROP FUNCTION
. Все активные функции перезагружаются каждый раз, когда сервер
запускается, если Вы не запускаете mysqld
с --skip-grant-tables
опция. В этом случае инициализация UDF пропускается, и UDFs недоступны.
Для получения инструкций по записи определяемых пользователем функций см. Раздел 22.3.2, "Добавляя Новую Определяемую пользователем Функцию". Для механизма UDF, чтобы работать, функции должны быть записаны в C или C++ (или другой язык, который может использовать соглашения о вызовах C), Ваша операционная система должна поддерживать динамическую загрузку, и Вы, должно быть, скомпилировали mysqld динамически (не статически).
AGGREGATE
функционируйте работы точно как собственный агрегат MySQL (сводка) функция
такой как SUM
или COUNT()
. Для AGGREGATE
работать, Ваш mysql.func
таблица должна содержать a type
столбец.
Если Ваш mysql.func
у таблицы нет этого столбца, следует выполнить mysql_upgrade программу, чтобы создать это (см. Раздел 4.4.7, "mysql_upgrade
— Таблицы MySQL Check и Upgrade").
Обновить совместно используемую библиотеку, связанную с UDF, проблемой a DROP FUNCTION
оператор, обновите совместно используемую библиотеку, и затем
проблему a CREATE FUNCTION
оператор. Если Вы обновляете совместно используемую библиотеку сначала и затем используете DROP FUNCTION
, сервер может отказать.