Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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.17节,“CREATE PROCEDURE 和 CREATE FUNCTION 语句”。)

可加载函数是一种扩展 MySQL 的方式,使用新函数,如ABS()CONCAT()。见添加可加载函数

function_name 是在 SQL 语句中调用函数时使用的名称。RETURNS 子句指示函数返回值的类型。DECIMALRETURNS 后是合法的值,但当前 DECIMAL 函数返回字符串值,应该写成 STRING 函数。

IF NOT EXISTS 防止出现名称已经存在的可加载函数时的错误,但不能防止出现同名内置函数时的错误。IF NOT EXISTS 也支持 CREATE FUNCTION 语句。见函数名称解析

如果给出 AGGREGATE 关键字,表示该函数是一个聚合(组)函数。聚合函数与native MySQL 聚合函数,如SUM()COUNT(),工作方式相同。

shared_library_name 是实现函数的共享库文件的基础名称。该文件必须位于插件目录中,该目录由plugin_dir 系统变量指定。更多信息,见第7.7.1节,“可加载函数安装和卸载”

CREATE FUNCTION 需要在 mysql 系统架构上拥有INSERT 权限,因为它将函数注册到 mysql.func 系统表中添加一行记录。

CREATE FUNCTION 也将函数添加到性能架构user_defined_functions 表中,该表提供了关于已安装可加载函数的实时信息。请参阅第29.12.22.10节,“用户自定义函数表”

Note

mysql.func 系统表一样,性能_schema 中的user_defined_functions 表中列出了使用 CREATE FUNCTION 安装的可加载函数。与 mysql.func 表不同的是,user_defined_functions 表还列出了服务器组件或插件自动安装的可加载函数。这使得user_defined_functions 比较适合检查已安装的可加载函数。

在正常启动序列中,服务器将加载注册在 mysql.func 表中的函数。如果服务器使用--skip-grant-tables 选项启动,表中的函数将不被加载且不可用。

Note

要升级与可加载函数关联的共享库,执行DROP FUNCTION语句,升级共享库,然后执行CREATE FUNCTION语句。如果先升级共享库然后使用DROP FUNCTION,服务器可能会意外关闭。