MySQL - DROP FUNCTION 语句
MySQL DROP FUNCTION 语句
函数是一段有组织的、可重用的代码块,用于执行单个相关操作。函数为您的应用程序提供了更好的模块化和高度的代码重用性。
MySQL 提供了一组执行特定任务的内置函数,例如 CURDATE() 函数返回当前日期。
您可以使用 DROP FUNCTION 语句删除一个函数。
语法
以下是 DELETE FUNCTION 语句的语法 -
DROP FUNCTION function_name
其中,function_name 是您需要删除的函数的名称。
示例
假设我们使用以下 CREATE 语句创建了一个名为 Emp 的表 -
CREATE TABLE Emp( Name VARCHAR(255), DOB DATE, Location VARCHAR(255) );
现在,让我们在 Emp 表中插入一些记录 -
INSERT INTO Emp VALUES ('Amit', DATE('1970-01-08'), 'Hyderabad'), ('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'), ('Sudha', DATE('1980-11-06'), 'Vijayawada');
让我们创建一个 getDob() 函数,它接受员工的姓名,检索并返回 DOB 列的值。
DELIMITER // CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; return dateOfBirth; END// DELIMITER ;
以同样的方式,如果我们创建另一个如下所示的表格 -
CREATE TABLE student ( Name VARCHAR(100), Math INT, English INT, Science INT, History INT );
现在让我们在学生表中插入四条记录 -
INSERT INTO student values ('Raman', 95, 89, 85, 81), ('Rahul' , 90, 87, 86, 81), ('Mohit', 90, 85, 86, 81), ('Saurabh', NULL, NULL, NULL, NULL );
以下函数更新上面创建的表 -
DELIMITER // Create Function test.tbl_Update(S_name Varchar(50), M1 INT, M2 INT, M3 INT, M4 INT) RETURNS INT DETERMINISTIC BEGIN UPDATE student SET Math = M1, English = M2, Science = M3, History = M4 WHERE Name = S_name; RETURN 1; END // DELIMITER ;
您可以使用 SHOW FUNCTION STATUS 语句验证数据库中的函数列表,如下所示 -
SHOW FUNCTION STATUS WHERE db = 'test'\G;
输出
上述查询产生以下输出 -
************ 1. row ************ Db: test Name: getDob Type: FUNCTION Definer: root@localhost Modified: 2023-12-05 15:03:56 Created: 2023-12-05 15:03:56 Security_type: DEFINER Comment: character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: utf8mb4_0900_ai_ci ************ 2. row ************ Db: test Name: tbl_Update Type: FUNCTION Definer: root@localhost Modified: 2023-12-05 15:06:48 Created: 2023-12-05 15:06:48 Security_type: DEFINER Comment: character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: utf8mb4_0900_ai_ci
以下查询将删除/丢弃上面创建的函数 -
DROP FUNCTION getDob; DROP FUNCTION tbl_update;
验证
由于我们已经删除了这两个函数。如果您再次验证函数列表,您将得到一个空集 -
SHOW FUNCTION STATUS WHERE db = 'test'; Empty set (0.00 sec)
IF EXISTS 子句
如果您尝试删除一个不存在的函数,将会产生如下所示的错误 -
DROP FUNCTION demo; ERROR 1305 (42000): FUNCTION test.demo does not exist
如果将 IF EXISTS 子句与 DROP FUNCTION 语句一起使用(如下所示),则指定的函数将被删除;如果给定名称的函数不存在,则查询将被忽略。
DROP FUNCTION IF EXISTS demo;