MySQL Server允许创建用户定义的函数(UDF)并将其加载到服务器中以扩展服务器功能。服务器功能可以使用UDF全部或部分实现。此外,您可以编写自己的UDF。
安装和卸载用户定义的功能
必须先将用户定义的函数(UDF)装入服务器,然后才能使用它们。MySQL支持在运行时加载UDF。

要加载UDF,请使用以下CREATE FUNCTION语句。例如:

CREATE FUNCTION metaphon
  RETURNS STRING
  SONAME 'udf_example.so';

UDF文件的基本名称取决于您的平台。通用后缀适用.so于Unix和类Unix系统, .dll适用于Windows。

加载UDF时,可以从Performance Schema user_defined_functions表中获得有关它的信息 。请参见 第5.7.2节“获取用户定义的功能信息”。

CREATE FUNCTION还会在mysql.func系统表中注册UDF,以使服务器在后续重新启动时将其加载。因此, CREATE FUNCTION需要系统数据库的 INSERT特权 mysql。

要删除UDF,请使用以下DROP FUNCTION语句。例如:

DROP FUNCTION metaphon;

DROP FUNCTION卸载UDF并将其从mysql.func系统表中删除。因此,DROP FUNCTION 需要系统数据库的DELETE特权mysql。如果UDF不再在表中注册,则服务器不会自动加载UDF以进行后续重启。

您不能用于CREATE FUNCTION重新安装以前安装的功能。要重新安装功能,请先使用将其删除 DROP FUNCTION,然后再使用进行安装CREATE FUNCTION。例如,如果要升级到提供该函数的更新实现的MySQL新版本,或者重新编译已编写的函数的新版本,则需要执行此操作。否则,服务器将继续使用旧版本。

如果使用该--skip-grant-tables选项启动服务器 ,则它不会查询该mysql.func表,也不会加载该表中列出的UDF。

获取用户自定义功能信息
性能架构 user_defined_functions表包含有关当前加载的用户定义函数的信息:

SELECT * FROM performance_schema.user_defined_functions;