MySQL 函数
Rashmi Patidar
2023年1月30日
本文介绍如何在 MySQL 中使用和创建一个简单的函数。
MySQL 中的函数
是什么
在 MySQL 编程语言中,函数
是一组语句,它们执行一组行并返回一个值。
当功能块被外部调用时,这组代码执行业务逻辑,而转换恰好返回 void 或任何单独的值。
函数有助于在保存和检索数据之前处理数据。它有多种类型,如单值或多个参数函数。
我们可以从函数中获得的好处包括:
- 在不同的地方使用相同的功能进行一些操作。
- 一处改动,处处可见效果。
- 功能易于维护。
- 它允许代码共享和所有用途的一致性。
- 减少相同任务的返工和重复使用现有功能。
MySQL 中的函数原型或语法如下。
CREATE FUNCTION function_name [ (parameter datatype [, parameter datatype]) RETURNS return_datatype
BEGIN
Declaration_section
Executable_section
END;
让我们对上述语法有更多的见解和细节。
- 语法以
CREATE FUNCTION
语句开头;它在内部表示 MySQL,需要创建一个新方法。 - 在 function 关键字之后,
function_name
是特定名称,表示行块是所提供语句的别名。当给定函数名时,用户尝试执行给定的集合以执行所需的函数。 - 在函数名旁边,可以有
n
个参数作为参数传递给函数。参数列表由变量名和变量数据类型两部分组成。
3.1。变量名可用于函数操作逻辑。发生转换的语句集使用参数变量来处理接收到的数据。
3.2 变量名后的数据类型声明限制使用传递定义的参数。数据类型作为主要验证来验证传递的参数。 RETURNS
关键字指定下一个值是函数的单个返回值。Return_datatype
是函数返回值的数据类型。它还包括数据类型的大小,例如VARCHAR(20)
。BEGIN
关键字在内部指定关键字旁边的行是执行下一组行的起点。它表明这是功能块的开始。Declaration_section
是声明所有变量的功能块的位置或顶部。Executable_section
是实际代码行用于操作的块。这些行是执行业务转换逻辑的确切行。END;
是指定块结束的终端关键字。该关键字与BEGIN
语句结合使用。该语句说明了块的开始和结束。
在 MySQL 中使用 CREATE FUNCTION
创建函数
创建函数的先决条件是:
- 有一个正确的 MySQL 连接并保持服务器正常运行。
- 创建一个数据库并在需要创建函数的地方使用该数据库(例如:
myFirstDb
)。 - 预先创建一个可以调用函数的表(例如:
stu_name
)。 - 在函数起作用的表中输入一些条目并做出响应。
CREATE TABLE `stu` (
`id` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`dob` date DEFAULT NULL
);
INSERT INTO `myFirstDb`.`stu`(`id`,`name`,`dob`) VALUES ('111','Test',DATE('1970-01-08'));
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `get_stu_name`(stu_id VARCHAR(50)) RETURNS varchar(50) CHARSET utf8mb4
BEGIN
declare stu_name varchar(50) ;
select name into stu_name from myFirstDb.stu where id = stu_id;
RETURN stu_name;
END$$
DELIMITER ;
当我们使用带有 SELECT
关键字的函数名时,会发生以下函数调用。调用语句如下所示。
Select get_stu_name('111');
调用语句将参数 1
作为学生 ID 传递并执行该函数。要成功运行函数名称,必须存在一个学生表,其中 id
作为属性之一。
当记录存在时,该函数将与学生 ID 对应的学生姓名返回为 1。
作者: Rashmi Patidar
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn