mysql存储函数

本文详细介绍了MySQL中自定义函数的创建与使用方法,包括函数的要素、创建语法、参数类型、作用域以及循环和条件控制等高级特性,通过实例展示了如何实现1到n的求和运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DELIMITER //

-- 自定义函数
-- 函数要素:函数名,参数列表(形参和实参),返回值,函数体(作用域)
-- 创建函数
-- 创建语法

CREATE FUNCTION functionName([形参列表]) RETURNS 数据类型 -- 规定要返回的数据类型
BEGIN
	-- 函数体
	-- 返回值:return 类型(指定数据类型);
END

CREATE FUNCTION f1() RETURNS INT
RETURN 100;

-- 自定义函数与系统函数调用方式是一样:select 函数名([实参列表]);

-- 调用函数
SELECT fi();

-- 查看所有函数
SHOW FUNCTION STATUS\G

-- 查看函数创建语句
SHOW CREATE FUNCTION f1\G

-- 删除函数
DROP FUNCTION f1;

-- 函数参数
-- 参数分两种:定义时的参数叫形参,调用时的参数叫实参(实参可以是数值也可以是变量,实参要求必须指定数据类型)
FUNCTION 函数名(形参名字 字段类型) RETURNS 数据类型

-- 做函数:计算1-n之间的和
CREATE  FUNCTION f2(int_1 INT) RETURNS INT
BEGIN
	-- 定义条件变量
	SET @i = 1;	-- @符号定义的变量是全局变量,没有的可以理解为局部变量
	SET @res = 0;	-- 保存结果
	
	-- 循环求和
	WHILE @i <= int_1 DO
		-- 求和:任何变量要修改,必须使用set关键字
		-- mysql中没有+=,没有++
		SET @res = @res + @i;
		
		-- 修改循环变量
		SET @i = @i + 1;
	END WHILE;
	-- 返回值
	RETURN @res;
END
//


-- 作用域
-- mysql中的作用域与js中的作用域完全一样
-- 全局变量可以在任何地方使用;局部变量只能在函数内部使用

-- 全局变量:使用set关键自定义,使用@符号标志
-- 局部变量:使用declare关键字声明,没有@符号;所有的局部变量的声明,必须在函数体开始之前

-- 求和:1-n之间的和,要求5的倍数不加
CREATE FUNCTION f3(int_1 INT) RETURNS INT
BEGIN
	-- 声明变量:循环变量,结果变量
	DECLARE i INT DEFAULT 1;
	DECLARE res INT DEFAULT 0;	-- 定义局部变量可以有属性
	
	-- 循环判断
	mywhile:WHILE i <= int_1 DO
		-- 相加:判断
		IF i % 5 = 0 THEN
			-- 修改循环条件
			SET i = i + 1;
			-- 不符合条件:循环重新来过
			ITERATE mywhile;
		END IF;
		-- 相加
		SET res = res + i;
		
		-- 改变循环变量
		SET i = i + 1;
	END WHILE;
	-- 返回结果
	RETURN res;
END//

本文链接:https://blog.youkuaiyun.com/oneeyear/article/details/82995759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值