将一张表中的部分数据copy到另一张表中存储过程

1.  example one : 

CREATE PROCEDURE `gift_procedure`() 
BEGIN
    -- 需要定义接收游标数据的变量 
  DECLARE a CHAR(16);
      -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
  -- 游标
  DECLARE cur CURSOR FOR select id from t_app_user where `create_date`  >= '2018-01-12' and id < 1342;
  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur;
  -- 开始循环
  read_loop: LOOP
    -- 提取游标里的数据,这里只有一个,多个的话也一样;
    FETCH cur INTO a;
    -- 声明结束的时候
    IF done THEN
      LEAVE read_loop;
    END IF;
    -- 这里做你想做的循环的事件        
        INSERT INTO t_app_user_gift (remarks, type, app_user_id, gift_id, expire_date, used, del_flag, create_date, update_date)
        SELECT '新人注册送券','1',a,id,DATE_ADD(now(), INTERVAL 1 YEAR),'0','0',now(),now() FROM t_gift WHERE id BETWEEN 7 AND 12;
  END LOOP;
  -- 关闭游标
  CLOSE cur;

END 

2.   业务描述: 将代理商父表的数据导入到代理商指子表中

CREATE PROCEDURE `t_agent_insert_info`() 
    COMMENT '代理商网点表的导入' 
BEGIN
      
     /*    声明一个变量 用来标记游标是否遍历完 */
     DECLARE  done  int DEFAULT  false ;
     DECLARE  L1 VARCHAR (255) DEFAULT  NULL ;
      DECLARE  L2 VARCHAR (255) DEFAULT  NULL ;
   
    DECLARE  cur   CURSOR   FOR   SELECT    agent_code  from  t_agent_net_shop  ;
 
    /*  游标执行到最后一行 设置done=true */
    DECLARE  CONTINUE  HANDLER  for not found  set done = true ;

  /*  执行查询*/
   OPEN CUR ;
   
   /* 遍历游标每一行*/
   read_loop: loop 
     
    /* 提取游标的数据*/

    FETCH cur into  L1,L2; 
  
    IF done then 
    
    LEAVE   read_loop ;

    end if ;
     /* 复制数据到指定的表中*/
    INSERT INTO t_agent_net_shop  (net_point_name,agent_code)
     VALUES (L1,L2 )  ;
  
    END LOOP ;
     /* 关闭游标*/
     CLOSE CUR ;

END 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值