MySQL儲存過程-->通過遊標遍歷和異常處理遷移資料到歷史表
-- 大表資料遷移,每天凌晨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`
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 ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1062498/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用SQL SERVER儲存過程實現歷史資料遷移SQLServer儲存過程
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- MySQL 儲存過程定義條件和異常處理MySql儲存過程
- MySQL遊標和異常處理MySql
- MySQL 儲存過程/遊標/事務MySql儲存過程
- 儲存過程——遊標儲存過程
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- Mysql儲存過程中使用多遊標MySql儲存過程
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- 異常處理過程
- 儲存所有歷史提交資料下遷移git倉庫Git
- MySQL過程和遊標MySql
- mysql 遊標的使用(儲存過程)MySql儲存過程
- MySQL 儲存過程空結果集錯誤Error 1329 No data 的異常處理MySql儲存過程Error
- MySQL儲存過程中捕獲異常的方法MySql儲存過程
- 通過TEB遍歷程式模組
- 儲存過程——異常捕獲&列印異常資訊儲存過程
- SQL Server通過建立臨時表遍歷更新資料SQLServer
- 某次BW 異常處理過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 儲存過程if,for,while語句,陣列和遊標使用儲存過程While陣列
- js資料處理——遍歷JS
- MYsql-儲存過程-遊標的巢狀MySql儲存過程巢狀
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Mysql 資料庫水平分表 儲存過程MySql資料庫儲存過程
- 如何遷移RDS中的加密儲存過程加密儲存過程
- mysql 儲存過程和事件排程MySql儲存過程事件
- Mysql 儲存過程MySql儲存過程
- 三種騷操作繞過迭代器遍歷時的資料修改異常
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- jQuery 遍歷 – 過濾jQuery
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- MySql資料庫——儲存過程MySql資料庫儲存過程
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- sqlserver 臨時表 遊標 儲存過程拼sql 日期函式等SQLServer儲存過程函式