MySQL - CREATE 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 create a stored function using the CREATE FUNCTION statement.
Following is the syntax the CREATE FUNCTION statement −
CREATE FUNCTION function_Name(input_arguments) RETURNS output_parameter

Where, function_name is the name of the function you need to create, input_arguments are the input values of the function and output_parameter is the return value of the function.
Suppose we have created a table named Emp in the database using the CREATE statement as shown below −
mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255));
Query OK, 0 rows affected (2.03 sec)

And we have inserted three records in the Emp table as −
mysql> INSERT INTO Emp VALUES ('Amit', DATE('1970-01-08'), 'Hyderabad');
mysql> INSERT INTO Emp VALUES ('Sumith', DATE('1990-11-02'), 'Vishakhapatnam');
mysql> INSERT INTO Emp VALUES ('Sudha', DATE('1980-11-06'), 'Vijayawada');

Following query creates a function named getDob() which accepts the name of the employee, retrieves and returns the value of DOB column.
mysql> DELIMITER //
mysql> 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; MySQL CREATE FUNCTION Statement
         return dateOfBirth;
   END//
Query OK, 0 rows affected (0.31 sec)
mysql> DELIMITER ;
If you call the function you can get date of birth of an employee as shown below −
mysql> SELECT getDob('Amit');
+----------------+
| getDob('Amit') |
+----------------+
| 1970-01-08     |
+----------------+
1 row in set (0.15 sec)

Assume we have created another table as shown below −
CREATE TABLE student (Name VARCHAR(100), Math INT, English INT, Science INT, History INT);
INSERT INTO student values('Raman', 95, 89, 85, 81);
INSERT INTO student values('Rahul' , 90, 87, 86, 81);
INSERT INTO student values('Mohit', 90, 85, 86, 81);
INSERT INTO student values('Saurabh', NULL, NULL, NULL, NULL );

Following query creates a function with name tbl_Update −
mysql> DELIMITER //
Create Function 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 //
mysql> DELIMITER ;
You can call the above created function as shown below −
mysql> Select tbl_update('Saurabh',85,69,75,82);
+-----------------------------------+
| tbl_update('Saurabh',85,69,75,82) |
+-----------------------------------+
| 1                                 |
+-----------------------------------+
1 row in set (0.28 sec)
If you get the records of the table student using the select statement you can observe the modified record −
mysql> SELECT * from student;
+---------+------+---------+---------+---------+
| Name    | Math | English | Science | History |
+---------+------+---------+---------+---------+
| Raman   | 95   | 89      | 85      | 81      |
| Rahul   | 90   | 87      | 86      | 81      |
| Mohit   | 90   | 85      | 86      | 81      |
| Saurabh | 85   | 69      | 75      | 82      |
+---------+------+---------+---------+---------+
4 rows in set (0.00 sec)

    31 Lectures 
     6 hours 

 Eduonix Learning Solutions

    84 Lectures 
     5.5 hours 

 Frahaan Hussain

    6 Lectures 
     3.5 hours 

 DATAhill Solutions Srinivas Reddy

    60 Lectures 
     10 hours 

 Vijay Kumar Parvatha Reddy

    10 Lectures 
     1 hours 

 Harshit Srivastava

    25 Lectures 
     4 hours 

 Trevoir Williams
 Print
 Add Notes
 Bookmark this page