MySQL - CREATE FUNCTION Statement
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.
Syntax
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.
Example 1
Suppose we have created a table named Emp in the database using the CREATE statement as shown below −
CREATE TABLE Emp( Name VARCHAR(255), DOB DATE, Location VARCHAR(255) );
And we have inserted three records in the Emp table as −
INSERT INTO Emp VALUES
('Amit', DATE('1970-01-08'), 'Hyderabad'),
('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'),
('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.
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; MySQL CREATE FUNCTION Statement
return dateOfBirth;
END//
DELIMITER ;
If you call the function you can get date of birth of an employee as shown below −
SELECT getDob('Amit');
Output
The above query produces the following output −
| getDob('Amit') |
|---|
| 1970-01-08 |
Example 2
Assume we have created another table as shown below −
CREATE TABLE student ( Name VARCHAR(100), Math INT, English INT, Science INT, History INT );
Now, let us insert few 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 query creates a function with name tbl_Update −
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 // DELIMITER ;
You can call the above created function as shown below −
Select tbl_update('Saurabh',85,69,75,82);
Output
Following is the output of the above query −
| tbl_update('Saurabh',85,69,75,82) |
|---|
| 1 |
If you get the records of the table student using the select statement you can observe the modified record −
SELECT * from student;
Output
The above mysql query produces the following output −
| 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 |