MySQL - DROP FUNCTION Statement



MySQL DROP FUNCTION Statement

A function is a block of organized, reusable code that is used to perform a single, related action. Functions provide better modularity for your application and a high degree of code reusing.

MySQL provides a set of built-in function which performs particular tasks for example the CURDATE() function returns the current date.

You can DELETE a function using the DROP FUNCTION statement.

Syntax

Following is the syntax the DELETE FUNCTION statement −

DROP FUNCTION function_name

Where, function_name is the name of the function you need to delete.

Example

Suppose we have created a table named Emp using the following CREATE statement −

CREATE TABLE Emp(
   Name VARCHAR(255), 
   DOB DATE, 
   Location VARCHAR(255)
);

Now, let us insert some records into the Emp table −

INSERT INTO Emp VALUES 
('Amit', DATE('1970-01-08'), 'Hyderabad'),
('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'),
('Sudha', DATE('1980-11-06'), 'Vijayawada');

Let us create a getDob() function which accepts the name of the employee, retrieves and returns the value of DOB column.

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 ;

In the same way if we have created another table shown below −

CREATE TABLE student (
   Name VARCHAR(100), 
   Math INT, 
   English INT, 
   Science INT, 
   History INT
);

Now let us insert four records into student table −

INSERT INTO student values
('Raman', 95, 89, 85, 81),
('Rahul' , 90, 87, 86, 81),
('Mohit', 90, 85, 86, 81),
('Saurabh', NULL, NULL, NULL, NULL );

Following function updates the above create table −

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 ;

You can verify the list of functions in a database using the SHOW FUNCTION STATUS statement as shown below −

SHOW FUNCTION STATUS WHERE db = 'test'\G;

Output

The above query produces the following output −

************ 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

Following queries deletes/drops the above created functions −

DROP FUNCTION getDob;

DROP FUNCTION tbl_update;

Verification

Since we have deleted both the functions. If you verify the list of function again you will get an empty set −

SHOW FUNCTION STATUS WHERE db = 'test';
Empty set (0.00 sec)

The IF EXISTS clause

If you try to drop a function that doesn’t exist error will be generated as shown below −

DROP FUNCTION demo;
ERROR 1305 (42000): FUNCTION test.demo does not exist

If you use the IF EXISTS clause along with the DROP FUNCTION statement as shown below, the specified function will be dropped and if a function with the given name, doesn’t exist the query will be ignored.

DROP FUNCTION IF EXISTS demo;
Advertisements