MySQL - 创建函数语句



MySQL 创建函数语句

函数是一块组织良好的、可重用的代码块,用于执行单个相关的操作。函数为您的应用程序提供更好的模块化和高度的代码重用。

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 查询产生以下输出:

姓名 数学 英语 科学 历史
Raman 95 89 85 81
Rahul 90 87 86 81
Mohit 90 85 86 81
Saurabh 85 69 75 82
广告

© . All rights reserved.