Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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 的一种方式,使其具有像本机(内置)MySQL 函数一样的功能,例如 ABS()CONCAT()。见 添加可加载函数

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

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

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

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

创建函数 需要 INSERT 权限以便在 mysql 系统模式下添加一行到 mysql.func 系统表中注册函数。

创建函数 也将函数添加到性能模式 user_defined_functions 表中,以提供已安装的可加载函数的运行时信息。请参阅 第 29.12.22.10 节,“用户定义函数表”

Note

mysql.func 系统表类似,性能模式 user_defined_functions 表也列出了使用 创建函数 安装的可加载函数。与 mysql.func 表不同的是,user_defined_functions 表还列出了服务器组件或插件自动安装的可加载函数。这使得 user_defined_functions 表比 mysql.func 表更适合检查哪些可加载函数已安装。

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

Note

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