MySQL Server允许创建用户定义的函数(UDF)并将其加载到服务器中以扩展服务器功能。服务器可以实现UDF全部或部分功能。此外,您可以编写自己的UDF。
以下各节介绍如何安装和卸载UDF,以及如何在运行时确定安装了哪些UDF并获取有关它们的信息。有关编写UDF的信息,请参见 第28.4节“向MySQL添加函数”。
安装和卸载 User-Defined 功能
必须先将 User-defined functions(UDF)加载到服务器中,然后才能使用它们。 MySQL 在运行时支持 UDF loading。
要加载 UDF,请使用创建 FUNCTION语句。例如:
CREATE FUNCTION metaphon
RETURNS STRING
SONAME 'udf_example.so';
UDF文件的基本名称取决于您的平台。通用后缀适用.so
于Unix和类Unix系统, .dll
适用于Windows。
加载UDF时,可从mysql.func
系统表中获得有关它的信息 。请参见 第5.6.2节“获取用户定义的功能信息”。
CREATE FUNCTION
还会在mysql.func
系统表中注册UDF,以使服务器在后续重新启动时将其加载。因此, CREATE FUNCTION
需要mysql
数据库的插入权限。
要删除 UDF,请使用DROP FUNCTION语句。例如:
DROP FUNCTION metaphon;
DROP FUNCTION
卸载UDF并将其从mysql.func
系统表中删除。因此,DROP FUNCTION
需要mysql
数据库的删除权限。如果UDF不再在表中注册,则后续重新启动时服务器不会自动加载UDF。
您不能用于CREATE FUNCTION
重新安装以前安装的功能。要重新安装功能,请先使用将其删除 DROP FUNCTION
,然后再使用进行安装CREATE FUNCTION
。例如,如果要升级到提供该函数的更新实现的MySQL新版本,或者重新编译已编写的函数的新版本,则需要执行此操作。否则,服务器将继续使用旧版本。
如果使用--skip-grant-tables
选项启动服务器 ,则它不会查询该mysql.func
表,也不会加载该表中列出的UDF。
获取用户自定义功能信息
mysql
系统数据库中的func
table 显示哪些 UDF 已使用CREATE FUNCTION
注册:
SELECT * FROM mysql.func;
func
table 包含以下列:
- name
SQL语句中引用的UDF名称。
- ret
UDF返回值类型。允许值为0(STRING
),1(REAL
),2(INTEGER
),3(ROW
)或4(DECIMAL
)。
- dl
包含可执行UDF代码的UDF库文件的名称。该文件位于plugin_dir
系统变量命名的目录中 。
- type
UDF类型function
(标量)或 aggregate
。