MySQL - CREATE FUNCTION 语句
MySQL CREATE FUNCTION 语句
函数是一段有组织的、可重用的代码块,用于执行单个相关操作。函数为您的应用程序提供了更好的模块化和高度的代码重用性。
MySQL 提供了一组执行特定任务的内置函数,例如 CURDATE() 函数返回当前日期。
您可以使用 CREATE FUNCTION 语句创建存储函数。
语法
以下是 CREATE FUNCTION 语句的语法 -
CREATE FUNCTION function_Name(input_arguments) RETURNS output_parameter
其中,function_name 是您需要创建的函数的名称,input_arguments 是函数的输入值,output_parameter 是函数的返回值。
示例 1
假设我们有使用 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; MySQL CREATE FUNCTION Statement return dateOfBirth; END// DELIMITER ;
调用该函数,您可以获取员工的出生日期,如下所示 -
SELECT getDob('Amit');
输出
上述查询产生以下输出 -
getDob('Amit') |
---|
1970-01-08 |
示例 2
假设我们创建了另一个表,如下所示 -
CREATE TABLE student ( Name VARCHAR(100), Math INT, English INT, Science INT, History INT );
现在,让我们在 student 表中插入一些记录 -
INSERT INTO student values ('Raman', 95, 89, 85, 81), ('Rahul' , 90, 87, 86, 81), ('Mohit', 90, 85, 86, 81), ('Saurabh', NULL, NULL, NULL, NULL );
以下查询创建一个名为 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 ;
您可以像下面这样调用上面创建的函数 -
Select tbl_update('Saurabh',85,69,75,82);
输出
以下是上述查询的输出 -
tbl_update('Saurabh',85,69,75,82) |
---|
1 |
如果您使用 select 语句获取表 student 的记录,则可以观察到修改后的记录 -
SELECT * from student;
输出
上述 mysql 查询产生以下输出 -
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 |