国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql的存儲過程、游標 、事務實例詳解

mysql的存儲過程、游標 、事務實例詳解

2020-08-05 16:41zhoubang521 Mysql

這篇文章主要介紹了mysql的存儲過程、游標 、事務實例詳解的相關資料,這里舉實例說明MySQL 存儲過程與游標和事務,需要的朋友可以參考下

mysql的存儲過程、游標 、事務實例詳解

下面是自己曾經編寫過的mysql數據庫存儲過程,留作存檔,以后用到的時候拿來參考。

其中,涉及到了存儲過程、游標(雙層循環)、事務。

【說明】:代碼中的注釋只針對當時業務而言,無須理會。

代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
DELIMITER $$
DROP PROCEDURE IF EXISTS `transferEmailTempData`$$
 
CREATE PROCEDURE transferEmailTempData(IN jobId VARCHAR(24))
BEGIN
  DECLARE idval VARCHAR(24) DEFAULT '';
  DECLARE taskIdval VARCHAR(24) DEFAULT '';
  DECLARE groupIdval VARCHAR(24) DEFAULT '';
  DECLARE emailval VARCHAR(50) DEFAULT '';
  
  /*標識正式表是否存在一條相同數據,即:groupId、email相同*/
  DECLARE infoId VARCHAR(24) DEFAULT '';
  
  /*標識事務錯誤*/
  DECLARE err INT DEFAULT 0;
  
  /*達到一定數量就進行提交,計數器*/
  DECLARE counts INT DEFAULT 0;
  
  /*標識是否回滾過*/
  DECLARE isrollback INT DEFAULT 0;
  
  /*游標遍歷時,作為判斷是否遍歷完全部記錄的標記*/
  DECLARE done INTEGER DEFAULT 0;
  
  /*獲取臨時表該任務的數據*/
  DECLARE cur CURSOR FOR SELECT id,taskId,groupId,email FROM `t_email_data_temp` WHERE taskId=jobId;
  
  /*根據群組id、email查詢是否存在相同記錄*/
  DECLARE cur2 CURSOR FOR SELECT id FROM `t_email_info` e WHERE e.`group_id` = groupIdval AND e.`email_address` = emailval;
  
  /* 出現錯誤,設置為1,只要發生異常就回滾*/
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err=1;
  
  /*聲明當游標遍歷完全部記錄后將標志變量置成某個值*/
  DECLARE CONTINUE HANDLER FOR NOT FOUND
  SET done=1;
  
  /*開啟事務*/
  START TRANSACTION;
  
  /*打開游標*/
  OPEN cur;
  
  /*使用LOOP循環遍歷*/
  out_loop:LOOP
  
    /*將每一條結果對應的字段值賦值給變量*/
    FETCH cur INTO idval,taskIdval,groupIdval,emailval;
    IF done = 1 THEN
      LEAVE out_loop;
    END IF;
    
    /*打開第二個游標*/
    OPEN cur2;
      SET done = 0;
      FETCH cur2 INTO infoId;
      
      /*如果正式表不存在相同groupId and email記錄,添加到正式表*/
      IF done = 1 THEN
      
        /*插入正式表*/
        INSERT INTO `t_email_info` VALUES(idval,emailval,groupIdval,0,'',NOW(),'admin',NOW(),'admin');
        
        /*刪除臨時數據*/
        DELETE FROM `t_email_data_temp` WHERE id = idval;
        
        /*計數器,每1000條才提交*/
        SET counts = counts + 1;
        
        /*發生異常,回滾*/
        IF err=1 THEN
          SET isrollback=1;
          ROLLBACK;
        ELSE
          IF counts = 1000 THEN
            COMMIT;
            /*達到1000條提交后,重置計數器*/
            SET counts=0;
          END IF;
        END IF;
      ELSE
        /*已經存在相同記錄,則刪除該記錄*/
        IF done=0 THEN
          DELETE FROM `t_email_data_temp` WHERE id = idval;
        END IF;
      END IF;
      FETCH cur2 INTO infoId;
    CLOSE cur2;
    
    /*控制外部的循環,該步驟不能缺少,否則只循環一次就結束了*/
    SET done=0;
    
  END LOOP out_loop;
  CLOSE cur;
  
  /*如果沒有發生過回滾事件,則更新task狀態*/
  /*如果回滾過,不更新task狀態,下次執行任務的時候,會再次將剩余沒有提交的數據進行添加到正式表*/
  IF isrollback=0 THEN
    UPDATE `t_email_task` t SET t.`if_finish` = 1 WHERE t.`id`=jobId;
  END IF;
  
  END$$
 
DELIMITER ;

以上就是mysql的存儲過程、游標 、事務的講解,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://www.cnblogs.com/zhoubang521/p/5200317.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本不卡免费新一二三区 | 黄在线免费 | 爱爱视频网站 | 国产天堂| 国产精品国产 | 日韩欧美一二三区 | 久久婷婷欧美 | 国产高清精品在线 | 日韩一区二区在线观看 | 偷拍自拍亚洲欧美 | 欧美日韩在线免费观看 | 亚洲国产免费av | 国产一区二区三区在线免费观看 | 欧美日本在线观看 | 亚洲国产精品一区二区三区 | 九九热精品国产 | 国产成人av在线 | 国产一区二区亚洲 | 欧美在线高清 | 亚洲欧美在线人成swag | 九色porny国模私拍av | 在线成人www免费观看视频 | 精品久久一区二区 | 一区二区视频 | 亚洲福利一区二区 | 欧美日韩在线一区 | 中文字幕在线永久在线视频 | 国产精品日本一区二区不卡视频 | 免费一二区 | 久久国产精品视频 | 欧美在线观看一区二区 | 日韩欧美视频一区 | 中文二区 | av一区二区在线观看 | 欧美午夜一区二区三区免费大片 | 成人免费在线电影 | 日韩一区二区免费视频 | 精品国产91| 中文字幕在线一区二区三区 | 好吊妞国产欧美日韩免费观看视频 | 久久精品2019中文字幕 |