- 浏览: 579529 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
两个数据操纵语言(DML)语句:BULK COLLECT和FORALL。
这两个语句在PL/SQL内部进行一种数组处理;BULK COLLECT提供对数据的高速检索,FORALL可大大改进INSERT、UPDATE和DELETE操作的性能。Oracle数据库使用这些语句大大减少了PL/SQL与SQL语句执行引擎的环境切换次数,从而使其性能有了显著提高。
例如:如果你要插入5000条数据,一般情况下,在pl/sql中用for循环,循环插入5000次,
而用forall一次就可以插入5000条,提高了性能和速度。
这两个语句在PL/SQL内部进行一种数组处理;BULK COLLECT提供对数据的高速检索,FORALL可大大改进INSERT、UPDATE和DELETE操作的性能。Oracle数据库使用这些语句大大减少了PL/SQL与SQL语句执行引擎的环境切换次数,从而使其性能有了显著提高。
例如:如果你要插入5000条数据,一般情况下,在pl/sql中用for循环,循环插入5000次,
而用forall一次就可以插入5000条,提高了性能和速度。
DECLARE --定义游标并插入数据 CURSOR CUR_OBJECT_FORALL IS SELECT UUID FROM TEST; --定义forall对象数据 定义的是列对象 即UUID列 TYPE T_OBJECT_FORALL IS TABLE OF CUR_OBJECT_FORALL%ROWTYPE INDEX BY BINARY_INTEGER; --定义forall实例 T_OBJECT_FORALL1 T_OBJECT_FORALL; BEGIN --打开游标 OPEN CUR_OBJECT_FORALL; --把游标数据放入forall实例中 FETCH CUR_OBJECT_FORALL BULK COLLECT INTO T_OBJECT_FORALL1; --关闭游标 CLOSE CUR_OBJECT_FORALL; --循环遍历forall实例并批量插入数据库 FORALL I IN T_OBJECT_FORALL1.FIRST .. T_OBJECT_FORALL1.LAST INSERT INTO FORALLTEST VALUES T_OBJECT_FORALL1 (I); COMMIT; END;
--测试表1 drop table test1; create table test1(id number(10),name varchar2(10)); insert into test1 values(1,'aa'); insert into test1 values(2,'bb'); commit; --测试表2 drop table test2; create table test2(id number(10),name varchar2(10)); --test1 declare type dr_type is table of test1%ROWTYPE index by binary_integer; dr_table dr_type; begin select id, name BULK COLLECT into dr_table from test1; FORALL i IN dr_table.first .. dr_table.last insert into test2 values dr_table (i); --error statement --1.insert into test2 values(dr_table(i));报没有足够的值错误,此处外面不可以加括号,当有多个字段的时候,单个字段可以加括号 --2.insert into test2 values(dr_table(i).id,dr_table(i).name);集合的field不可以在forall中使用,必须是整体使用 --3.insert into test2 values dr_table(i+1);错误,不可以对索引变量进行运算 --4.insert into test2 values dr_table(i);dbms_output.put_line(i);不正确,找不到i,因为forall中只能使用单条语句可以引用索引变量 end;
发表评论
文章已被作者锁定,不允许评论。
-
sql 最小化表查询次(col1,col2) = (select col1,col2 from t)
2018-01-02 16:51 531最小化表查询次数 ... -
sql 用inner join取代in和exists
2018-01-02 16:48 1116使用表连接替换EXISTS ... -
oracle HINT详解
2017-09-01 10:42 495ORACLE的HINT详解 hints是oracle提供的 ... -
oracle jdbctemplate如何优化查询速度
2017-08-21 09:33 12801.设置setFetchSize进行优化 // 可以优化 ... -
oracle Parallel模式-Parallel用法(/*+PARALLEL(n)*/)
2017-08-18 16:48 18121.用途 强行启用 ... -
oracle 存储过程学习总结
2016-08-22 08:42 333dbms_output.put_line('CONCAT ... -
oracle SGA总结信息
2016-07-06 10:38 495SGA 系统全局区 SGA是Oracle用来为实例村粗数据和 ... -
oracle where条件分支查询
2016-06-30 16:16 505select * from test xx where ... -
oracle with as用法
2016-06-24 09:58 917with as语法 –针对一个别名 with tmp as ... -
oracle 重复数据处理的sql整理
2016-06-22 14:44 376Oracle 删除重复数据只留一条 1、查找表中多余的重 ... -
oracle 数据库组成部分(数据库(各种文件)+实例(SGA PGA + 后台进程))知识
2016-04-11 19:51 1240一、SQL server中的实例与 ... -
oracle expdp与impdp导入导出
2016-03-17 10:17 1267[b]数据泵工具导出的步骤:[/b] 1、创建DIRECT ... -
oracle 常用sql语句积累
2016-01-28 11:01 5471.删除重复列 delete from t t1 where ... -
oracle 表中有子父关系列则使用CONNECT BY PRIOR
2014-10-27 10:08 402查询名字为xx xxx的所有子数据 SELECT re.U ... -
oracle 存储过程使用实例
2014-10-22 17:41 5901.建包 CREATE OR REPLACE PACKA ... -
oracle 删除大量数据后整理表(analyze table xxx compute statistics)
2014-10-17 18:09 21791. DELETE 后 TRUNCATE TABLE ; 然 ... -
oracle splitstr 函数
2014-10-15 17:45 1384splitstr函数 CREATE OR REPLACE ... -
oracle 高效Sql语句总结
2014-10-08 11:23 488No SQL,No cost. SQL语句是造成数据库 ... -
oracle merge 更新或插入数据
2014-09-26 14:26 470主要功能 提供有条件地更新和插入数据到数据库表中 如果该 ... -
Oracle时间去除零的问题
2014-07-17 19:48 819天碰到只要取月份和天数,如果月份前面有0要去掉0.比如说201 ...
相关推荐
Oracle关键字(保留字)的总结,搬运而来,挣点积分,感谢下载
oracle数据库中包含的所有关键字收集
oracle实现多字段匹配一个关键字查询的两种方法
本文介绍了 使用 forall 来提高sql执行的效率。并通过对合格员工加薪存储过程的实例介绍,揭示了使用forall的好处
Oracle关键字用法整合
oracle关键字,一些常用关键字
主要介绍了Oracle中多表关联批量插入,批量更新与批量删除操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
如果我想知道颜值有哪些取值,所以希望从结果集中去掉重复的记录,加上distinct关键字,位置在select和字段列表之间。distinct是从结果集中筛选出唯
kettle快速加载到oracle之oracle批量加载-Oracle Bulk Loader
oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本。
主要给大家介绍了关于mybatis中使用oracle关键字出错的解决方法,文中通过示例代码将解决的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
1、Oracle数据库初学者:通过本资源,你可以快速建立起Oracle数据库的知识框架,掌握核心概念与基本操作。 2、数据库开发者:深化对Oracle的理解,提高查询优化与故障排查能力,提升项目开发效率。
在Oracle 10g前,FORALL语句的语法只能处理连续性的数组元素。Oracle 10g解决了这两方面的问题,并增加了INDICES OF和VALUES OF子句。本文介绍了这两个子句的语法。
这是美河管理员朋友花了大量时间翻译的Oracle OCP题库及关键词提炼,希望对致力于考Oracle 11g OCP的朋友有所帮助.
springboot项目在Oracle下测试批量添加和批量删除,...项目测试了Oracle下添加,删除数据,批量添加和批量删除操作。使用sprignboot自带的test进行测试。本项目所使用的sql文件在resources下,自己plsql执行下即可。
JSP+oracle实现小型多关键字检索模块
Pipelined 是Oracle的一个关键字
主要介绍了oracle中利用关键字rownum查询前20名员工信息,本文通过代码给大家简单介绍了ORACLE 中ROWNUM用法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
没毛病,本人亲测oracle实现多字段匹配一个关键字查询
ORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txtORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txt