文档章节

Mysql游标使用 批量插入或更新数据

Jesons
 Jesons
发布于 2015/05/08 12:50
字数 338
阅读 1629
收藏 3
-- LOOP循环
CREATE PROCEDURE `test`.`new_procedure` ()
BEGIN
-- 需要定义接收游标数据的变量 
  DECLARE a CHAR(16);
  -- 游标
  DECLARE cur CURSOR FOR SELECT i FROM test.t;
  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur;
  
  -- 开始循环
  read_loop: LOOP
    -- 提取游标里的数据,这里只有一个,多个的话也一样;
    FETCH cur INTO a;
    -- 声明结束的时候
    IF done THEN
      LEAVE read_loop;
    END IF;
    -- 这里做你想做的循环的事件

    INSERT INTO test.t VALUES (a);

  END LOOP;
  -- 关闭游标
  CLOSE cur;

END;

注:变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!

另外 :

如果没有则插入数据,如果有则更新的方法:

insert into `test` values (a,b) ON DUPLICATE KEY UPDATE `a`=c;



-- while循环
create procedure curdemo()
begin
       declare stop_flag int DEFAULT 0;//声明一个标记,当游标状态为最后一条记录时,修改该变量
	declare id int default 0;
	declare type int default 0;
	declare order1 int default 0;
	declare cur1 cursor for select * from test1;
       declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1;  
       open cur1;//打开游标

       fetch cur1 into id,type,order1;读取数据到游标
       while stop_flag<>1 DO//若游标有下一条记录,循环
	    insert into test2 values(id,type,order1);
           fetch cur1 into id,type,order1;
       end while;
       close cur1;//关闭游标
end;



© 著作权归作者所有

共有 人打赏支持
Jesons
粉丝 32
博文 56
码字总数 47373
作品 0
江北
程序员
私信 提问
加载中

评论(3)

倒影年华
需要commit?
Jesons
Jesons

引用来自“潜心修炼呀”的评论

这是批量么。。
潜心修炼呀
这是批量么。。
使用BULK COLLECT+FORALL加速批量提交

一、 批量提交 批量提交特点: 占用较少undo,资源(独占锁,undo)快速释放,执行时间长 批量提交适合场景: 在线大批量插入,更新,删除数据 二、 BULK COLLECT+FORALL性能提升 1.通过BULK COLLECT加...

楚云泽
2016/03/21
264
0
python的数据库操作

使用python可以很方便的操作数据库,刚刚开始学python,第一个脚本是导出数据库到指定位置,下面简明总结下python的数据库操作 下载安装python环境,下载MySQLdb,MySQLdb是python的数据库操...

晨曦之光
2012/04/13
156
0
Mongo的一些心得

一.mongo-java-driver 项目中使用的是java原生mongo操作api,个人觉得,不是那么的方便,资料好像也比较少,只有官方文档可供使用 基础用法不再啰嗦,特别介绍下mongo的批量查询和批量插入。...

清风傲剑
2015/09/29
1K
0
Oracle + Mybatis实现批量插入、更新和删除示例代码

前言 Mybatis是web工程开发中非常常用的数据持久化的框架,通过该框架,我们非常容易的进行数据库的增删改查。数据库连接进行事务提交的时候,需要耗费的资源比较多,如果需要插入更新的数据...

一看就喷亏的小猿
2018/11/22
0
0
Python操作数据库之 MySQL

Python操作数据库之MySQL 一、安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作。 如果要源码安装,可以这里下载: https://pypi.Pyth...

四京
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(二)

下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 与...

电池盒
23分钟前
1
0
简单聊聊Linux学习经历

学习,是我们一生中都规避不了的一个话题,人的一生中都是在不断的学习,无论是功成名就的人士,还是一无是处的小混混,始终都处在一个不断学习的环境中,只是学习的内容千差万别,有的人是为...

linux-tao
23分钟前
1
0
如何才能从程序员成长为实战型架构师?必掌握这7大实战技能经验

想成为一名架构师,但是架构师对应的技能,我应该掌握哪些啊?以及掌握的程度是什么样的?如何成为一名真正的实战性架构师? 我简要分为以下7点来谈谈,从技能的角度抛砖引玉,希望你对你架构...

mikechen优知
34分钟前
2
0
vue里实现echarts中国地图

echartsDemo.vue <template> <div> <div id="chart_example"></div> </div></template><script> // 首先要 cnpm install echarts import echarts from 'echarts' import ......

Danni3
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部