MySQL - CREATE FUNCTION 用户定义函数语句
函数是一段有序的、可重用的代码块,用于执行单个相关操作。函数为您的应用程序提供了更好的模块化和高度的代码重用。
MySQL 提供了一组执行特定任务的内置函数,例如 CURDATE() 函数返回当前日期。
除了存储函数之外,您还可以使用 CREATE FUNCTION 语句创建用户定义函数并将其加载到 MySQL 服务器中。要执行此函数,您需要 INSERT 权限。
语法
以下是用于用户定义函数的 CREATE FUNCTION 语句的语法 -
CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} SONAME shared_library_name
其中,function_name 是您需要创建的函数的名称,shared_library_name 是包含所需用户定义函数代码的库文件的名称。
示例
假设我们有一个名为 udf.dll 的 UDF 文件,其中包含一个函数示例。以下查询将 UDF 函数添加到 MySQL -
CREATE FUNCTION sample RETURNS INTEGER soname 'udf.dll';
您可以使用以下查询验证 UDF 是否已安装 -
select * from mysql.func where name = 'sys_exec';
输出
以下是上述 MySQL 查询的输出 -
name | ret | dl | type |
---|---|---|---|
sample | 2 | udf.dll | function |
如果您正在创建/加载聚合函数,则可以指定 AGGREGATE 子句。根据您正在加载的函数的返回值,您可以指定各种返回类型,例如 STRING、INTEGER、REAL 和 DECIMAL。
以下是将用户定义函数加载到 MYSQL 的更多要求 -
CREATE FUNCTION metaphon RETURNS STRING SONAME "udf_example.dll"; CREATE FUNCTION myfunc_double RETURNS REAL SONAME "udf_example.dll"; CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "udf_example.dll"; CREATE FUNCTION sequence RETURNS INTEGER SONAME "udf_example.dll"; CREATE AGGREGATE FUNCTION avgcost RETURNS REAL SONAME "udf_example.dll";