您的位置:首页 > 数据库 > MySQL

MySQL 存储过程游标的简单用法

2017-04-11 10:53 302 查看

代码:

delimiter $
create PROCEDURE PROC_COUPON_TIMING_TASK()
BEGIN
-- 定义变量
DECLARE key_Id INT DEFAULT 0;

-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE coupon_data CURSOR FOR SELECT u.id FROM xsxx_store_user_coupon u
LEFT JOIN xsxx_store_coupon c on u.coupon_id = c.id
WHERE NOW() >= c.end_time and u.status = 0;

-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

-- 打开游标
OPEN  coupon_data;
-- 遍历
read_loop: LOOP
-- 取值
FETCH  NEXT from coupon_data INTO key_Id;
IF done THEN
LEAVE read_loop;
END IF;

-- 将到期的优惠券修改状态为-1
UPDATE xsxx_store_user_coupon SET `status` = -1 WHERE id = key_Id;
END LOOP;
-- 关闭游标
CLOSE coupon_data;
END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql