mysql存储过程导入表

运用存储过程,把用户表一数据导入用户表二

DELIMITER @@
  CREATE PROCEDURE imp_to_user2()
  BEGIN

    – 声明一个标志done, 用来判断游标是否遍历完成

    DECLARE done INT DEFAULT FALSE;

    – 声明一个变量,用来存放从游标中提取的数据 
    – 特别注意这里的名字不能与由游标中使用的列明相同,否则得到的数据都是NULL 
    DECLARE lname VARCHAR(20) DEFAULT NULL;
    DECLARE lage INT(5) DEFAULT 0;

    – 声明游标对应的 SQL 语句
    DECLARE cur CURSOR FOR SELECT NAME,age FROM t_user;

    – 在游标循环到最后会将 done 设置为 TRUE
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


    – 执行查询 
    OPEN cur;

    – 遍历游标每一行 
    read_loop: LOOP

      – 提取游标里的数据
      FETCH cur INTO lname,lage ;
      – 声明结束的时候
      IF done THEN
      LEAVE read_loop;
      END IF;
      --定义全局变量@num记录 要同步到的表是否已有该名字
      SELECT COUNT(*) INTO @num FROM t_user2 u WHERE u.name=lname;
      --如果该名字不存在,则同步
      IF @num=0 THEN
      INSERT INTO t_user2(id,NAME, age) VALUES( NULL,lname,lage);
      END IF;

    END LOOP;

    – 关闭游标 
    CLOSE cur;

  END
@@
DELIMITER  ;

猜你喜欢

转载自www.cnblogs.com/smilehq/p/9116788.html