MySql存储过程

来源:互联网 发布:linux 虚机网络不通 编辑:程序博客网 时间:2024/06/05 03:12

mysql 存储过程编写: 

CURRENT_USER PROCEDURE `sq_congratulationProc`BEGIN-- 需要定义接收游标数据的变量 DECLARE uid int(8);DECLARE cgln varchar(60) character set utf8;DECLARE temp varchar(60) character set utf8;DECLARE usern varchar(60)  character set utf8;DECLARE realn varchar(255)  character set utf8;DECLARE userm decimal(10) ;DECLARE ct int(10);-- 遍历数据结束标志  DECLARE done INT DEFAULT FALSE;  -- 游标  DECLARE cur CURSOR FOR SELECT t2.user_id,t2.user_name,t2.real_name,t2.user_money,t2.change_time FROM (SELECT t1.*,u1.user_name,u1.real_name from (select g.user_id,g.user_money,u.user_name as btj_name, change_time from (ecs_account_log g LEFT JOIN ecs_users u  on g.from_key=u.user_id ) where u.user_rank=4 and g.from_type=1 and g.user_id=u.parent_id) t1 left JOIN ecs_users u1 on  t1.user_id=u1.user_id) t2;    -- 将结束标志绑定到游标  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;  -- 打开游标  OPEN cur;    -- 开始循环  read_loop: LOOP    -- 提取游标里的数据,这里只有一个,多个的话也一样;    FETCH cur INTO uid,usern,realn,userm,ct;    -- 声明结束的时候    IF done THEN      LEAVE read_loop;    END IF;    -- 这里做你想做的循环的事件    set cgln=realn;IF cgln IS  NULL or cgln ='' THENSET cgln=usern;END IF;IF cgln is not NULL and cgln<>'' THENSELECT cgln REGEXP '^[1][35678][0-9]{9}$' INTO temp;IF temp=1 THENSET cgln=REPLACE(cgln, SUBSTR(cgln,4,4), '****');end if;INSERT INTO ecs_congratulate_info (`user_id`, `user_name`, `congratulate_info`, `type_id`, `create_time`)VALUES(uid,usern,FORMAT(userm,0),4,ct);END IF;  END LOOP;  -- 关闭游标  CLOSE cur;END