Documentation Home
MySQL 8.0 参考手册  / 第 13 章 SQL 语句  / 13.7 数据库管理语句  / 13.7.4 组件、插件和可加载函数语句  /  13.7.3.1 可加载函数的 CREATE FUNCTION 语句

13.7.3.1 可加载函数的 CREATE FUNCTION 语句

CREATE [AGGREGATE] FUNCTION function_name
    RETURNS {STRING|INTEGER|REAL|DECIMAL}
    SONAME shared_library_name

此语句加载名为 的可加载函数 function_name。(CREATE FUNCTION也用于创建存储函数;参见 第 13.1.15 节,“CREATE PROCEDURE 和 CREATE FUNCTION 语句”。)

可加载函数是一种使用新函数扩展 MySQL 的方法,该函数的工作方式类似于本机(内置)MySQL 函数,例如 ABS()CONCAT(). 请参阅 添加可加载函数

function_name是应该在 SQL 语句中用来调用函数的名称。该 RETURNS子句指示函数返回值的类型。DECIMAL是 之后的合法值RETURNS,但目前 DECIMAL函数返回字符串值,应该像STRING函数一样编写。

AGGREGATE关键字(如果给定)表示该函数是聚合(组)函数 。聚合函数的工作方式与本机 MySQL 聚合函数完全相同,例如SUM()or COUNT()

shared_library_name是包含实现函数的代码的共享库文件的基本名称。该文件必须位于插件目录中。该目录由 plugin_dir系统变量的值给出。有关详细信息,请参阅第 5.6.1 节,“安装和卸载可加载函数”

CREATE FUNCTION需要系统数据库的 INSERT权限, mysql因为它向系统表添加一行mysql.func以注册函数。

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

笔记

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