|
Spec-Zone .ru
спецификации, руководства, описания, API
|
CREATE [AGGREGATE] FUNCTIONfunction_nameRETURNS {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, сервер может отказать.