`

FORALL与BULKCOLLECT的使用方法

    博客分类:
  • sql
阅读更多

1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换。

  2.使用BLUK COLLECT一次取出一个数据集合,比用游标条取数据效率高,尤其是在网络不大好的情况下。但BLUK COLLECT需要大量内存。

  使用例子:

  (1)定义一个TABLE

  CREATE OR REPLACE TYPE string_table AS TABLE OF VARCHAR2(100);

  (2)在存储过程里面测试

  DECLARE

  v_table string_table;

  BEGIN

  SELECT cust_name

  BULK COLLECT INTO v_table

  FROM cust c

  WHERE c.cust_id BETWEEN 64561 AND 64565;

  FORALL idx IN 1..v_table.COUNT

  INSERT INTO cust_test VALUES(v_table(idx));

  COMMIT;

  END;

==============================================================================

 

CREATE TABLE parts1 (pnum INTEGER, pname VARCHAR2(15));
CREATE TABLE parts2 (pnum INTEGER, pname VARCHAR2(15));
DECLARE
TYPE NumTab IS TABLE OF parts1.pnum%TYPE INDEX BY PLS_INTEGER;
TYPE NameTab IS TABLE OF parts1.pname%TYPE INDEX BY PLS_INTEGER;
pnums NumTab;
pnames NameTab;
iterations CONSTANT PLS_INTEGER := 500000;
t1 INTEGER;
t2 INTEGER;
t3 INTEGER;
BEGIN
FOR j IN 1..iterations LOOP -- load index-by tables
pnums(j) := j;
pnames(j) := 'Part No. ' || TO_CHAR(j);
END LOOP;
t1 := DBMS_UTILITY.get_time;
FOR i IN 1..iterations LOOP -- use FOR loop
INSERT INTO parts1 VALUES (pnums(i), pnames(i));
END LOOP;
t2 := DBMS_UTILITY.get_time;
FORALL i IN 1..iterations -- use FORALL statement
INSERT INTO parts2 VALUES (pnums(i), pnames(i));
t3 := DBMS_UTILITY.get_time;
DBMS_OUTPUT.PUT_LINE('Execution Time (secs)');



declare
  type numlist is varray(6) of number;
  depts numlist := numlist(10,20,30,50,60,80);
begin
  forall j in 2..4
    delete from emp where deptno=depts(j);
  commit;
end;

分享到:
评论

相关推荐

    ABAP for all entries使用中注意的问题

    对于无法直接进行INNER JOIN的表,如BSEG与BSIS,使用FOR ALL ENTRIES IN可以作为一个替代方案。首先,将BSIS表的数据加载到一个内部表ITAB_MAIN中,然后利用FOR ALL ENTRIES IN将BSEG表与ITAB_MAIN串联起来,实现...

    OneForAll软件包

    3. **安装与使用OneForAll**: 用户通常需要将下载的OneForAll-master压缩包解压,然后在支持的环境中(如Python环境)运行脚本进行安装和执行。安装过程中可能需要安装一些依赖库,如requests、socket、threading...

    oracle使用forall提高sql效率

    本文介绍了 使用 forall 来提高sql执行的效率。并通过对合格员工加薪存储过程的实例介绍,揭示了使用forall的好处

    信息收集,子域名扫描工具oneforall

    OneForAll是一款由Python编写的子域名收集工具,它可以帮助安全测试人员和渗透测试人员自动化地获取目标网站相关的子域名信息。OneForAll在设计时兼顾了准确性和速度,可以通过多种方式进行子域名的发现,例如DNS...

    OneForAll 域名爆破查找工具

    懂得都懂 安装时进入该文件所在目录cmd 之后输入:...示例: python3 oneforall.py --target example.com run /*收集*/ ...python oneforall.py --target example.com run 使用时需进入所在目录!!!记得配置python环境

    for all 用法小结

    使用 `FORALL` 可以显著提升数据库应用程序的性能,尤其是在处理大量数据时。 #### 二、FORALL 语法及特点 `FORALL` 语句的基本语法结构如下: ```sql FORALL index IN lower_bound..upper_bound sql_statement; ...

    forall 用法小结

    本文将深入探讨`FORALL`的使用方法及其背后的原理,帮助开发者更好地理解和应用这一功能。 #### `FORALL`的基本概念与语法 `FORALL`语句允许在单个数据库调用中执行多次SQL操作,如插入、更新或删除记录。其基本...

    windows下navicat_premium_12 for all

    navicat_premium_12 for all是一个支持主流数据库管理的图形化软件,支持mysql,oracle,postgresql等。 我在windows7和windows10的64位系统下,安装了64位的navicat_premium_12 for all 版本,均可用。该安装软件...

    Oracle 10g中用FORALL处理非连续数组

    下面我们将详细介绍这两个子句的语法和使用方法。 INDICES OF 子句 INDICES OF 子句用于指定要处理的索引值的范围。它可以代替传统的 lower_bound ..upper_bound 语法,允许您指定不连续的索引值。例如: FORALL ...

    记录 集合 BULK COLLECT FORALL 执行计划

    在PL/SQL编程环境中,集合操作...总之,BULK COLLECT和FORALL结合记录的使用,使得在PL/SQL中处理大规模数据变得更加高效和便捷。它们减少了数据库交互次数,提高了程序执行速度,是PL/SQL编程中优化性能的重要工具。

    Antennas for all Applications

    Antennas for all Applications

    天线(中文版)-克劳斯-Antennas For All Applications-Kraus-3rd Ed.-Part.1

    经典教材 天线(中文版) - 克劳斯 - Antennas For All Applications - Kraus - Third Edition 共两部分请分别下载并置于同一文件夹后解压

    OneForAll:OneForAll是一种功能强大的子域收集工具

    :oncoming_fist: OneForAll是一款功能强大的子域收集工具 :memo: :rocket:上手指南 :loudspeaker:请推荐花一点时间阅读此文档,有助于你快速熟悉OneForAll! :snake:安装要求OneForAll基于开发和测试,OneFor...

    用FOR ALL ENTRIES IN 语句搜索 与用 IN语句搜索数据库效率对比.docx

    在SAP ABAP编程中,查询数据库记录时,有两个主要的搜索方法:`FOR ALL ENTRIES IN` 和 `IN` 语句。本文件通过一个实际的代码示例比较了这两种方法在执行效率上的差异。 首先,让我们了解两种语句的基本概念: 1. ...

    OneForAll是一款功能强大的子域收集工具

    在渗透测试中信息收集的重要性不言而喻,子域收集是信息收集中必不可少且非常重要的一环,目前...为了解决以上痛点,此项目应用而生,正如其名,我希望OneForAll是一款集百家之长,功能强大的全面快速子域收集终极神器

    boost 145 for all

    boost 145 for all boost 145 for all boost 145 for all boost 145 for all

    boost 145 for all2

    boost 145 for all2 boost 145 for all2 boost 145 for all2 boost 145 for all2

    Antennas - for all applications

    Antenna design technology and principle for graduates and engineers.The author John D.Kraus is IEEE life fellow.

    C#并发实战记录之Parallel.ForEach使用

    通过示例代码,详细介绍了Parallel.ForEach的使用方法和优化技巧。 一、使用Parallel.ForEach优化循环计算 在开发一个伙食费计算系统时,需要计算2000个人的伙食记录,使用了for循环,但是计算速度非常慢,需要7、...

Global site tag (gtag.js) - Google Analytics