-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表。

DELIMITER $$

USE `dbx`$$

DROP PROCEDURE IF EXISTS `pro_xx`$$

CREATE  PROCEDURE `pro_xx`()

BEGIN

DECLARE p_oalid INT DEFAULT 0;

DECLARE STOP INT DEFAULT 0;

DECLARE cur_oalid CURSOR FOR

SELECToal.id FROM oal_xxx oal WHERE oal.`ymd` <CONCAT(YEAR(DATE_ADD(NOW(),INTERVAL -1 MONTH)),'-',MONTH(DATE_ADD(NOW(),INTERVAL -1 MONTH )),'-',DAY(DATE_ADD(NOW(),INTERVAL-1 MONTH ))) LIMIT 1000;

DECLARE EXIT HANDLER FOR SQLSTATE '02000'  /**包含游标not found*/

BEGIN

SET STOP=1;

INSERTINTO db_logs(log_type,table_name,action_name,log_msg,create_time)

SELECT1, 'oal_xxx','pro_oal_log_move',CONCAT('primary key:',p_oalid,' 游标执行正常结束!'),NOW();

END;

DECLARE EXIT HANDLER FOR SQLEXCEPTION

BEGIN

SETSTOP=1;

INSERTINTO db_logs(log_type,table_name,action_name,log_msg,create_time)

SELECT2, 'oal_xxx','pro_oal_log_move',CONCAT('primary key:',p_oalid,' 移动执行失败'),NOW();

END;

OPEN cur_oalid;

-- 读取一行数据到变量

FETCH cur_oalid INTO p_oalid;

-- 这个就是判断是否游标已经到达了最后

WHILE STOP <> 1 DO

-- select p_id;

START TRANSACTION;

--   进行数据迁移

REPLACE INTO oal_xxx_history SELECT oal.*FROM oal_xxx oal WHERE oal.id=p_oalid ;

DELETE FROM oal_xxx WHERE id=p_oalid;

-- INSERT INTO t (tid) VALUES (p_tid);

COMMIT;

-- 读取下一行的数据

FETCH cur_oalid INTO p_oalid;

END WHILE;

CLOSE cur_oalid; -- 关闭游标

END$$

DELIMITER ;

MySQL存储过程 -- 通过游标遍历和异常处理迁移数据到历史表相关推荐

  1. mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_xx ...

  2. mysql存储过程表迁移for_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表 (转)...

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表. DELIMITER $$ USE `dbx`$$ DROP PROCEDURE IF EXISTS `pro_x ...

  3. mysql游标表间数据迁移_FalseMySQL存储过程--gt;通过游标遍历和异常处理迁移数据到历史表-mysql-第二电脑网...

    -- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟,迁移旧数据到历史表.DELIMITER $$ USE `dbx`$$ 电脑技术网对<FalseMySQL存储过程-->通过 ...

  4. Mysql定义DELETE操作触发器,将删除数据存入历史表

    Mysql定义DELETE操作触发器,将删除数据存入历史表 SQL如下: // An highlighted blockDELIMITER $$ CREATE TRIGGER <触发器名称> ...

  5. mysql存储过程之游标遍历数据表

    今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. ? 1  BEGIN  2      ...

  6. mysql存储过程和游标遍历

    DELIMITER $$ CREATE PROCEDURE alarm_replay_insert_procedure() BEGIN-- 定义变量 DECLARE _nowTime DATETIME ...

  7. mysql 将三个月的数据导到历史表_迁移数据到历史表,减少业务表中数据压力 Mysql...

    #数据迁移存储过程 DROP PROCEDURE IF EXISTS `delete_platform_patient`; DELIMITER ;; CREATE DEFINER=`root`@`%` ...

  8. 迁移数据到历史表SQL

    有时工作需要需要把当前表的数据,移到历史表中,而历史表基本是以时间(年)为后缀来命名历史表的,如 A_2011,A_2012,在移数据时,要按数据的时间,移到不同的表中,且由于如果数据有同步.一次处理 ...

  9. MySQL存储过程中游标使用

    在使用游标的时候,使用LOOP没有响应,后找到使用REPEAT实现,以下是代码: 建表语句 DROP table IF EXISTS test_table; create table test_tab ...

最新文章

  1. 用ASP.NET上传图片并生成带版权信息的缩略图
  2. VTK:vtkSeedWidget种子小部件用法实战
  3. GridCtrl学习笔记(2)寻找自动更新表格的最新数据并把其显示到当前窗口的方法...
  4. 检查图形是否为真彩色图形
  5. SLAM GMapping(6)扫描匹配器
  6. linux 延展集群如何设置,OCaml 4.11.0 发布,将函数式语言 Caml 在面向对象上进行延展...
  7. Python3 递归算法
  8. 阿里云2017财年:营收66.63亿 同比增长121%
  9. 【L298N 驱动电机的线路连接图】
  10. 五、 线性判别分析 LDA
  11. 在JavaScript中改变鼠标指针样式的方法
  12. 音频打不开 服务器运行失败,win7系统提示音频服务器未运行的解决方法
  13. 锚点是什么?锚点的使用
  14. 计算机怎么解除c盘用户权限,电脑c盘文件夹拒绝访问怎么办 删除c盘文件如何获得管理员权限...
  15. 618主场之变:谁是后疫情时代消费的主角?
  16. 【电气设计】理论知识学习(持续更新中...)
  17. document.documentElement对象
  18. 【QImage类常用函数】
  19. 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)
  20. 计算机网络技术人工智能发展史,人工智能发展史

热门文章

  1. linux scp 自动备份,linux Oracle 自动备份并scp
  2. wget 和scp对比_如何下载scp、wget、inotify及如何偷包
  3. 笔记本电脑黑屏后如何重装系统,解决笔记本电脑黑屏
  4. k8s-imagePullPolicy拉取策略
  5. 小雷的冰茶几(并查集)
  6. MySQL性能优化的最佳20+条经验
  7. 5G前传从无源到半有源平滑演进解决方案
  8. 蓝牙低功耗音频技术--目录大纲
  9. 【RegNet】《Designing Network Design Spaces》
  10. 《被讨厌的勇气》书摘心得之一切烦恼都来自人际关系(2)