28.4 向 MySQL 添加函数
有三种向 MySQL 添加函数的方法:
-
通过用户定义函数(UDF)界面。用户定义的函数被编译为库文件,然后使用CREATE FUNCTION和DROP FUNCTION语句动态添加到服务器或从服务器中删除。参见第 13.7.3.1 节“用户定义的函数的 CREATE FUNCTION 语法”。
-
通过创建本机(内置)MySQL 函数。本机函数被编译到mysqld服务器中,并永久可用。
-
通过创建存储的函数。这些是使用 SQL 语句而不是通过编译目标代码编写的。此处不介绍编写存储函数的语法。参见第 23.2 节“使用存储的例程”。
创建编译函数的每种方法都有优点和缺点:
-
如果编写用户定义的函数,则除了服务器本身之外,还必须安装目标文件。如果将函数编译到服务器中,则无需这样做。
-
本机函数需要您修改源分发。 UDF 不这样做。您可以将 UDF 添加到二进制 MySQL 发行版中。无需访问 MySQL 源。
-
如果升级 MySQL 发行版,则可以 continue 使用以前安装的 UDF,除非升级到 UDF 接口更改的较新版本。对于本机功能,您必须在每次升级时重复进行修改。
无论您使用哪种方法添加函数,都可以像本地函数(例如ABS()或SOUNDEX())一样在 SQL 语句中调用它们。
有关描述服务器如何解释对各种功能的引用的规则,请参阅第 9.2.5 节“函数名称的解析和解析”。
以下各节描述了 UDF 接口的功能,提供了编写 UDF 的说明,讨论了 MySQL 为防止 UDF 滥用而采取的安全预防措施,并描述了如何添加本机 MySQL 函数。
例如,说明如何编写 UDF 的源代码,请查看 MySQL 源代码发行版中提供的sql/udf_example.cc
文件。