您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL动态批量插入数据

bubuko 2022/1/25 20:10:03 mysql 字数 9387 阅读 1041 来源 http://www.bubuko.com/infolist-5-1.html

功能描述 static_ipqam_usage表中qam_id对应记录增加到四十条记录,要求增加的记录中prog_no、port_no字段信息顺序递增。 实现思路 一、将static_ipqam_usage表中不重复的qam_id暂存到t_ipqam上。 二、借助游标操作t_ipqam表,循环插入记 ...

功能描述

  static_ipqam_usage表中qam_id对应记录增加到四十条记录,要求增加的记录中prog_no、port_no字段信息顺序递增。

 

实现思路

  一、将static_ipqam_usage表中不重复的qam_id暂存到t_ipqam上。

  二、借助游标操作t_ipqam表,循环插入记录。

具体实现

 

技术分享图片
-- ----------------------------
-- Procedure structure for `SP_IPQAM_INSERT_DETAIL`
-- ----------------------------
DROP PROCEDURE IF EXISTS `SP_IPQAM_INSERT_DETAIL`;
DELIMITER ;;
CREATE DEFINER=`skip-grants user`@`skip-grants host` PROCEDURE `SP_IPQAM_INSERT_DETAIL`()
BEGIN
    # 遍历停止标识
  DECLARE done INT DEFAULT FALSE;
  # qamId
  DECLARE v_id INT;
    #qamId对应的记录总数
  DECLARE v_count INT DEFAULT 0;
    #需要插入的记录数
    DECLARE v_internal INT DEFAULT 0;
    #当前最大的节目号
    DECLARE v_progNo INT DEFAULT 0;
    #当前最大的端口号
    DECLARE v_portNo INT DEFAULT 0;
    #记录节目号、端口号递增步长
    DECLARE v_step INT DEFAULT 1;

    # 游标定义,此处为后面查询的结果集,游标类似于指针作用,每次指向一条记录,从而对当前的这条记录进行操作
    DECLARE cur CURSOR FOR SELECT t.qam_id FROM t_ipqam t;
    
    # 当没有找到记录时设置遍历标识
    DECLARE continue HANDLER FOR NOT FOUND SET done = TRUE;
    
    # 打开定义的游标
    OPEN cur;
    # 获取下一行数据
    FETCH cur INTO v_id;
    # 遍历处理
    WHILE NOT done DO
        #得到qamID对应的节目号最大值、端口号最大值、对应记录数
        SELECT MAX(prog_no),MAX(port_no),count(*) INTO v_progNo,v_portNo,v_count FROM static_ipqam_usage where ipqam_id = v_id;
        #计算需要增加的记录数
        SET v_internal = 40 - v_count;
        WHILE v_internal > 0 DO
            INSERT INTO static_ipqam_usage values(null,v_id,v_progNo+v_step,v_portNo+v_step,0,0,now());
            SET v_step = v_step +1;
            SET v_internal = v_internal - 1;
        END WHILE;
        # 获取下一行数据
        FETCH cur INTO v_id;
    END WHILE;

    # 关闭释放游标
    CLOSE cur;

END
;;
DELIMITER ;
View Code

 

 

 

完整脚本:

链接:https://pan.baidu.com/s/1tKFXgOwBdgZdUHAmx3ZMPg 
提取码:vtxv

 

调用方式:

call SP_IPQAM_INSERT_DETAIL();

最终数据验证

 

技术分享图片
SELECT t.ipqam_id,count(*) from 
static_ipqam_usage t
GROUP BY t.ipqam_id
HAVING  count(*) >=40
View Code

 

技术分享图片

 

 

 

 

  

 

MySQL动态批量插入数据

原文:https://www.cnblogs.com/hdk-19930507/p/12368524.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶