zoukankan      html  css  js  c++  java
  • 使用Mysql 存储过程和游标进行同步数据

    
    
    -- UpdateUserData是同步数据需要具体执行的步骤,AsyncUserData是控制UpdateUserData的条件。

    DROP PROCEDURE IF EXISTS UpdateUserData; DROP PROCEDURE IF EXISTS AsyncUserData;
    DELIMITER // CREATE PROCEDURE `UpdateUserData`(IN id int(11)) BEGIN DECLARE classidstr VARCHAR(500); DECLARE gradeidstr VARCHAR(500); DECLARE stageidstr VARCHAR(500); DECLARE childidstr VARCHAR(500); select CONCAT("[", GROUP_CONCAT( """,tb_child.class_id ,"""), "]") into classidstr from tb_child where patriarch_id=id; select CONCAT("[", GROUP_CONCAT(tb_child.grade_id), "]") into gradeidstr from tb_child where patriarch_id=id; select CONCAT("[", GROUP_CONCAT(tb_child.stage_id), "]") into stageidstr from tb_child where patriarch_id=id; select CONCAT("[", GROUP_CONCAT(tb_child.child_id), "]") into childidstr from tb_child where patriarch_id=id; IF childidstr is NULL THEN update tb_patriarch set class_ids='' , grade_ids ='' , stage_ids='' , child_ids='' where patriarch_id= id; ELSE update tb_patriarch set class_ids=classidstr , grade_ids =gradeidstr , stage_ids=stageidstr , child_ids=childidstr where patriarch_id= id; END IF; END // DELIMITER ; call UpdateUserData(4594); DELIMITER // CREATE PROCEDURE `AsyncUserData`() BEGIN DECLARE id int(11); -- 定义遍历数据结束标志 DECLARE done BOOLEAN DEFAULT 0; DECLARE curid CURSOR FOR select patriarch_id as id from tb_patriarch where child_ids='[0]' ; -- 当REPEAT由于没有更多的行供循环而不能继续时出现这个条件,将done设置为1,此时REPEAT终止 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; OPEN curid; read_loop:LOOP FETCH curid into id; IF done THEN LEAVE read_loop; END IF; call UpdateUserData(id); END LOOP; CLOSE curid; END // call AsyncUserData();

     
  • 相关阅读:
    CSS BEM 命名规范简介
    React 端的编程范式
    在React应用程序中用RegEx测试密码强度
    React 中获取数据的 3 种方法及它们的优缺点
    vue props传值常见问题
    如何理解vue中的v-model?
    利用jQuery not()方法选取除某个元素外的所有元素
    初识Nest.js
    react-绑定this并传参的三种方式
    Angular怎么防御xss攻击?
  • 原文地址:https://www.cnblogs.com/chongyao/p/12651447.html
Copyright © 2011-2022 走看看