• mysql 游标嵌套循环实例


    BEGIN
    #Routine body goes here...
    ####所有的2个小时之前生成的待支付订单更新为已过期
    DECLARE tmp_id INT;
    DECLARE tmp_order_id VARCHAR(22);
    DECLARE flag INT;
    DECLARE update_cursor CURSOR FOR SELECT id, order_id FROM yjl_item_order WHERE order_status = 0 AND add_time < DATE_SUB(NOW(),INTERVAL 2 HOUR);
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;
    SET flag=0;
    OPEN update_cursor;
    loop_xx1: LOOP /*循环*/
    FETCH update_cursor INTO tmp_id,tmp_order_id;
    IF flag=1 THEN
    leave loop_xx1;
    END IF;
    BEGIN
    DECLARE tmp_price_id INT;
    DECLARE tmp_num INT;
    DECLARE flag1 INT;
    DECLARE cursor2 CURSOR FOR SELECT price_id,code_num FROM yjl_order_info WHERE order_id = tmp_order_id;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag1=1;
    ###更新此订单的抵价券和邀请码
    UPDATE log_member_voucher a LEFT JOIN yjl_member_voucher b ON a.mixed_id = b.id SET a.status = 3, b.voucher_status = 0 WHERE a.order_id =
    tmp_order_id AND a.status = 0;
    UPDATE yjl_item_order SET order_status = 2 WHERE id = tmp_id;

    SET flag1=0;
    OPEN cursor2;
    loop_xx2: LOOP
    FETCH cursor2 INTO tmp_price_id, tmp_num;
    IF flag1=1 THEN
    leave loop_xx2;
    END IF;
    ###库存回滚
    UPDATE yjl_item_store SET realse_num = realse_num + tmp_num WHERE price_id = tmp_price_id;
    END LOOP;
    END;
    /*update set where*/
    END LOOP;
    CLOSE update_cursor ;
    END

  • 相关阅读:
    新的知识点
    知识点
    9.14知识点
    列表内容
    css的背景和边框
    css的text和font
    css
    js 第一天
    浏览器的差距
    布局
  • 原文地址:https://www.cnblogs.com/lytian/p/4616534.html
Copyright © 2020-2023  润新知