1.mysql 存储函数及调用
在 MySQL 中,存储函数(Stored Function)是一种在数据库中定义的特殊类型的函数,它可以从一个或多个参数返回一个值。存储函数在数据库层面上封装了复杂的 SQL 逻辑,使得在应用程序中调用时更加简单和高效。
下面是一个具体的 MySQL 存储函数的示例,该函数接受一个整数参数并返回该整数的平方值。
1.1 创建存储函数
首先,我们需要在 MySQL 数据库中创建一个存储函数。这里我们使用CREATE FUNCTION
语句来定义存储函数。
DELIMITER //
CREATE FUNCTION square_number(num INT) RETURNS INT
BEGIN
DECLARE result INT;
SET result = num * num;
RETURN result;
END //
DELIMITER ;
复制代码
在这个示例中:
(1)DELIMITER //
和 DELIMITER ;
是用来改变 MySQL 语句的结束符的,因为存储函数的定义中可能包含多个分号,这会导致 MySQL 解释器在存储函数定义内部错误地结束语句。
(2)CREATE FUNCTION square_number(num INT) RETURNS INT
声明了一个名为square_number
的存储函数,它接受一个整数参数num
,并返回一个整数结果。
(3)在BEGIN ... END
块中,我们定义了存储函数的主体逻辑。这里我们声明了一个变量result
,并计算num
的平方值,然后将结果赋值给result
。
(4)RETURN result;
语句将计算得到的result
值返回给调用者。
1.2 调用存储函数
一旦存储函数被创建,我们就可以在 SQL 查询中像调用普通函数一样调用它。下面是一个示例,展示如何在 SELECT 语句中调用square_number
函数:
sql复制代码
SELECT square_number(5); -- 返回 25
复制代码
在这个示例中,我们调用了square_number
函数并传入参数值 5,函数返回了 25 作为结果。
1.3 删除存储函数
如果我们不再需要某个存储函数,可以使用DROP FUNCTION
语句来删除它:
sql复制代码
DROP FUNCTION square_number;
复制代码
这个语句将删除名为square_number
的存储函数。
1.4 注意事项
(1)存储函数只能返回单一的值,而存储过程(Stored Procedure)可以返回多个值或结果集。
(2)存储函数可以在 SQL 语句的任何地方调用,就像调用内置函数一样。
(3)存储函数通常用于执行计算、数据转换或复杂的业务逻辑,这些逻辑在多个地方被重复使用。
2.MySQL 存储函数的示例
以下是一些关于 MySQL 存储函数的示例,这些示例涵盖了不同的场景和功能。
2.1 示例 1:计算两个数的和
假设我们想要创建一个存储函数来计算两个数的和。
DELIMITER //
CREATE FUNCTION add_numbers(num1 INT, num2 INT) RETURNS INT
BEGIN
DECLARE sum_result INT;
SET sum_result = num1 + num2;
RETURN sum_result;
END //
DELIMITER ;
-- 调用