MySQL - 用户定义函数的 DROP FUNCTION 语句
函数是一段有序的、可重用的代码块,用于执行单个相关操作。函数为您的应用程序提供了更好的模块化和高度的代码重用。
MySQL 提供了一组执行特定任务的内置函数,例如 CURDATE() 函数返回当前日期。除了存储函数之外,您还可以使用 CREATE FUNCTION 语句创建和加载用户定义函数。
MySQL DROP FUNCTION 语句
MySQL DROP FUNCTION 语句用于删除已添加到服务器的用户定义(可加载)函数。要执行此函数,您需要 DELETE 权限。
语法
以下是用户定义函数的 CREATE FUNCTION 语句的语法 -
DROP FUNCTION [IF EXISTS] function_name
其中,function_name 是您需要删除的可加载函数的名称。
示例
假设我们有一个名为 udf.dll 的 UDF 文件,其中包含一个函数示例,我们已使用 CREATE FUNCTION 语句将其加载到 MYSQL 中,如下所示 -
CREATE FUNCTION sample 返回 INTEGER soname 'udf.dll';
您可以使用以下查询来验证 UDF 是否已安装 -
select * from mysql.func where name = 'sample';
输出
以下是上述查询的输出 -
name | ret | dl | type |
---|---|---|---|
sys_exec | 2 | udf.dll | function |
以下查询使用 DROP FUNCTION 语句删除上面创建的函数 -
DROP FUNCTION sample;
由于我们已经删除了创建的函数,如果再次执行上述 SELECT 查询,您将得到一个空集。-
select * from mysql.func where name = 'sample'; Empty set (0.06 sec)
示例
让我们在 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";
以下一组要求删除上述所有功能 -
DROP FUNCTION metaphon; DROP FUNCTION myfunc_double; DROP FUNCTION myfunc_int; DROP FUNCTION sequence; DROP FUNCTION avgcost;
如果您尝试删除不存在的函数,将会产生如下所示的错误 -
DROP FUNCTION demo; ERROR 1305 (42000): FUNCTION test.demo does not exist
如果将 IF EXISTS 子句与 DROP FUNCTION 语句一起使用(如下所示),则指定的函数将被删除;如果给定名称的函数不存在,则查询将被忽略。
DROP FUNCTION IF EXISTS demo;