–隐式游标_单笔处理

BEGINFOR rec IN (SELECT e.empno, e.salFROM emp e) LOOPUPDATE emp eSET e.sal = rec.sal + 1WHERE e.empno = rec.empno;COMMIT;END LOOP;
END;

–隐式游标_多笔处理

DECLAREl_count NUMBER;
BEGINl_count := 0;FOR rec IN (SELECT e.empno, e.salFROM emp e) LOOPUPDATE emp eSET e.sal = rec.sal + 1WHERE e.empno = rec.empno;l_count := l_count + 1;IF l_count >= 1000 THENCOMMIT;l_count := 0;END IF;END LOOP;COMMIT;
END;

–显式游标_多笔处理

DECLARECURSOR cur_emp ISSELECT e.empno, e.salFROM emp e;l_empno NUMBER;l_sal   NUMBER;l_count NUMBER := 0;
BEGINOPEN cur_emp;LOOPFETCH cur_empINTO l_empno, l_sal;EXIT WHEN cur_emp%NOTFOUND;UPDATE emp eSET e.sal = l_sal + 1WHERE e.empno = l_empno;l_count := l_count + 1;IF l_count >= 1000 THENCOMMIT;l_count := 0;END IF;END LOOP;COMMIT;CLOSE cur_emp;
END;

–显式游标+数组_单笔处理

DECLARECURSOR cur_emp ISSELECT e.empno, e.salFROM emp e;TYPE empno_tbl IS TABLE OF emp.empno%TYPE;TYPE sal_tbl IS TABLE OF emp.sal%TYPE;l_empno_tbl empno_tbl;l_sal_tbl   sal_tbl;
BEGINOPEN cur_emp;LOOPFETCH cur_emp BULK COLLECTINTO l_empno_tbl, l_sal_tbl LIMIT 1000;FOR i IN l_empno_tbl.first .. l_empno_tbl.last LOOPUPDATE emp eSET e.sal = l_sal_tbl(i) + 1WHERE e.empno = l_empno_tbl(i);COMMIT;END LOOP;EXIT WHEN cur_emp%NOTFOUND;END LOOP;CLOSE cur_emp;
END;

–显式游标+数组_多笔处理

DECLARECURSOR cur_emp ISSELECT e.empno, e.salFROM emp e;TYPE empno_tbl IS TABLE OF emp.empno%TYPE;TYPE sal_tbl IS TABLE OF emp.sal%TYPE;l_empno_tbl empno_tbl;l_sal_tbl   sal_tbl;
BEGINOPEN cur_emp;LOOPFETCH cur_emp BULK COLLECTINTO l_empno_tbl, l_sal_tbl LIMIT 1000;FOR i IN l_empno_tbl.first .. l_empno_tbl.last LOOPUPDATE emp eSET e.sal = l_sal_tbl(i) + 1WHERE e.empno = l_empno_tbl(i);IF i >= l_empno_tbl.last THENCOMMIT;END IF;END LOOP;EXIT WHEN cur_emp%NOTFOUND;END LOOP;CLOSE cur_emp;
END;

–显式游标+数组+BULK COLLECT + FORALL

DECLARECURSOR cur_emp ISSELECT e.empno, e.salFROM emp e;TYPE empno_tbl IS TABLE OF emp.empno%TYPE;TYPE sal_tbl IS TABLE OF emp.sal%TYPE;l_empno_tbl empno_tbl;l_sal_tbl   sal_tbl;
BEGINOPEN cur_emp;LOOPFETCH cur_emp BULK COLLECTINTO l_empno_tbl, l_sal_tbl LIMIT 1000;FORALL i IN 1 .. l_empno_tbl.countUPDATE emp eSET e.sal = l_sal_tbl(i) - 1WHERE e.empno = l_empno_tbl(i);COMMIT;EXIT WHEN cur_emp%NOTFOUND;END LOOP;CLOSE cur_emp;
END;

PLSQL使用游标进行批量更新的方式相关推荐

  1. mybatis批量更新及其效率问题

    mybatis批量更新及其效率问题 一:背景 注意: 第一种: 第二种: 二:批量更新的方式总结: 第一种: 第二种: 三:总结: 最近,负责公司一些旧数据的批量整理和清洗工作,在网上寻找了两种myb ...

  2. mysql批量更新方法

    目录 方法一 replace into 批量更新 方法二 insert into 批量更新 方法三 临时表 批量更新 方法四 case when 批量更新 本篇文章实验mysql版本为5.7.20  ...

  3. MySQL 批量更新数据 - 实践

    1.应用场景 在测试环境需要做一些的数据的批量更新 在代码实现中, 并不建议这么做, 因为可能会有问题, 比如更新某个数据时失败, 会导致后面的更新操作都失败! 更好的方法TBD 2.学习/操作 最简 ...

  4. SqlServer 利用游标批量更新数据

    SqlServer 利用游标批量更新数据 Intro 游标在有时候会很有用,在更新一部分不多的数据时,可以很方便的更新数据,不需要再写一个小工具来做了,直接写 SQL 就可以了 Sample 下面来看 ...

  5. Mysql批量更新的三种方式

    前言 批量插入由于mysql的VALUES原生支持,使用较为便利. 批量更新的写法一般有三种,在更新数量较少的情况下,前两种性能不相上下.但是在更新字段增加,更新条数较多(500以上)建议使用第三种写 ...

  6. mysql批量更新报错_Mysql批量更新的三种方式

    前言 批量插入由于mysql的VALUES原生支持,使用较为便利. 批量更新的写法一般有三种,在更新数量较少的情况下,前两种性能不相上下.但是在更新字段增加,更新条数较多(500以上)建议使用第三种写 ...

  7. 【MyBatis】关于MyBatis批量更新的几种方式

    1. Java代码循环执行sql,逐条更新 这种方式就是将需要更新的数据,循环调用update方法去更新数据,实现代码如下: public void test() {// 需要更新的集合List< ...

  8. 通过Loadrunner读取excel表数据并批量更新到Oracle中

    本文以Loadrunner的Java_Vuser脚本为例,来做一个简化版的自动化测试框架(以excel作为数据驱动),实现批量更新Oracle业务数据库的目的,通过本文例子我们还可以实现将Loadru ...

  9. 在Hibernate中处理批量更新和批量删除

    批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...

最新文章

  1. ASP.NET MVC- Upload File的例子
  2. 环境监控告警系统之TIM即时消息推送部署
  3. 搞 java7 年,我有点想法想和大家聊聊
  4. SAP科目的行项目显示未勾选补救步骤
  5. 手机进水的正确处理方法?
  6. php默认访问的文件,PHP 网站修改默认访问文件的nginx配置
  7. android 扫描照片功能,Android自定义View- 雷达扫描图
  8. 尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误
  9. 2.WindowsServer2012R2装完的一些友好化设置
  10. RESTful源码笔记之RESTful Framework的基本组件
  11. 吴恩达深度学习——浅层神经网络
  12. 前端基础知识复习之html
  13. unity visual effect Graph 1
  14. idea快捷键失效,快捷键不能用
  15. android局域网怎么传文件,两手机同一局域网怎么传文件
  16. 差分放大电路及动态分析
  17. c#语言中文编程下载,C#编程自学软件
  18. 2021观澜二中高考成绩查询,深圳中学排名
  19. python爬虫精进第5关前5页歌词爬-Python抓取歌词自制FreeStyle
  20. 分布式与传统的对比简介

热门文章

  1. 什么是SAFe(规模化敏捷框架)3——敏捷发布火车(上)
  2. 重庆赛区 ▏2020年高教社杯全国大学生数学建模竞赛重庆赛区获奖名单
  3. material studio使用perl脚本形成交联聚合物
  4. SqlServer 获取当前系统时间
  5. 基于Springboot的实习管理系统的设计与实现
  6. docx4J实现替换word中的书签(.docx)
  7. mysql workbench导入mdb_如何将MDB(Access)文件转换为MySQL(或纯SQL文件)?
  8. thinkphp5.0学习(六): 获取请求类和URL基本信息
  9. NBT:可重复交互式的微生物组分析平台QIIME 2(2020.11发布)
  10. 编译原理陈火旺版第四章课后题答案