mysql 存储过程中游标cur和while循环的嵌套使用

本文介绍了在MySQL存储过程中如何使用游标cur与while循环进行嵌套,以实现例如支付完成后商品库存减扣的业务逻辑。在解决实际问题中,曾尝试使用repeat和while循环结合,但导致只执行了首个订单,其余未执行。最终通过调整,明确了repeat循环在游标遍历中的正确用法,同时提到了MySQL存储过程中的while, loop, repeat三种循环方式。" 8557394,1166525,NFSv3 ACCESS请求详解,"['NFS', '文件系统', '网络文件系统', '权限管理']

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

本来对存储过程不是很精,我们现在做的项目,基本上好多都是使用存储过程来完成一些业务逻辑的处理等。

这里举例使用存储过程来实现支付完成后商品库存减少的功能:

 这里使用到了while循环和cur游标的循环嵌套。

main:
BEGIN
	#处理付款成功减库存功能
	#传递参数是订单id(oid)
	DECLARE tpid varchar(100);
	#DECLARE rt int default 0;
	DECLARE tpoid varchar(100);
	DECLARE topprop varchar(100);
	DECLARE tcnt int default 0;
	declare done int default 0;
	DECLARE t_error INT DEFAULT 0;
	#根据toid来获取商品id
	DECLARE cur CURSOR FOR SELECT pid,opprop,cnt from 表 where oid = tpoid;
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
	DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
			

		while( locate(',',toid) >0 ) DO
				set tpoid = left(toid,locate(',',toid)-1);
				set toid=substr(toid,locate(',',toid)+1);
		#遍历商品中指定规格商品数量
		 open cur;
				fetch cur into tpid,topprop,tcnt;
					update 库存表 set stock=stock-tcnt where proid=tpid and itemvalues=CONCAT('{',topprop,'}&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值