• mysql中游标在存储过程中的具体使用方法


    昨天写的一个东东,分享下给大家。




    drop PROCEDURE  if exists sp_cleanUserData;

    CREATE  PROCEDURE `sp_cleanUserData`() 
    BEGIN


      /*定义游标*/
    declare v_dt bigint(20) default 0 ;
    declare v_num INT DEFAULT 0;

      /*游标循环到末尾时给定义的常量赋值*/
    declare cur_userId   CURSOR FOR select  userId from  user_level_info    where  DATE_SUB(CURDATE(), INTERVAL 60 DAY) >= firstLoginDate and lv<=10 and vip=0  ;
    declare CONTINUE HANDLER FOR SQLSTATE '02000' SET v_dt = -1;






        /*开游标*/
    OPEN  cur_userId;
            /*游标赋值*/
    FETCH  cur_userId INTO v_dt;
     
    set v_num=1;


             /* 循环体  */
    WHILE ( v_dt !=-1 ) DO

    /* 用户任务表 */
    delete  from  task_user where user_id =v_dt;
    /* 玩家公告  */
    delete  from  user_action_info where userId =v_dt;




     /*每循环100次commit下*/


    set v_num= v_num+1;
    if  v_num>100 then
    commit; 
    set v_num=1;
    end if;
            /*读取下一行的数据*/
            FETCH cur_userId INTO v_dt;
    /*循环结束*/
    END WHILE;
            /*关闭游标*/
    CLOSE cur_userId;


    END;



    call sp_cleanUserData;


  • 相关阅读:
    Linux下安装FTP服务(Ubuntu)
    Ubuntu下无法使用Secure_CRT连接服务器
    Mysql 锁机制
    PHP提取HTML代码中img标签下src属性
    Mysql 隐式转换
    PHPExcel在TP下使用
    ThinkPHP同时操作多个数据库
    PHP 时间相关操作
    ThinkPHP输入验证和I方法使用
    ThinkPHP模板内使用U方法
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6879059.html
Copyright © 2020-2023  润新知