`

讲解FORALL与BULK COLLECT的使用方法_SQL技巧

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

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

使用例子:

(1)定义一个TABLE   ----me add (type t_f1 is table of varchar2(20) type index by binary_integer)

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;

(3)

 begin
     
        forall indx in p_part_id.first .. p_part_id.last save exceptions
          insert into part_family
            (part_id,
             sub_part_id,
             part_name,
             sub_part_name,
             owner,
             project_name,
             file_name,
             v_id,
             last_time)
          values
            (p_parent_id(indx),
             p_part_id(indx),
             p_parent_name(indx),
             p_part_name(indx),
             p_owner(indx),
             p_project_name,
             p_file_name(indx),
             p_version(indx),
             sysdate);
      -- forall 里好像只能有一个语句?????
      exception
        when others then
          null;
      end;

<!---->
分享到:
评论

相关推荐

    记录 集合 BULK COLLECT FORALL 执行计划

    在PL/SQL编程环境中,集合操作BULK COLLECT和FORALL是提高数据库处理效率的关键特性。它们主要用于批量处理数据,减少数据库调用次数,从而优化性能。这些特性尤其适用于处理大量数据时,如循环遍历结果集并进行更新...

    oracle批量处理(bulk collect)

    这里展示了如何使用`BULK COLLECT`与游标结合,一次性获取所有符合条件的部门记录。 ##### 3. 在RETURNING INTO中使用BULK COLLECT ```plsql CREATE TABLE emp2 AS SELECT * FROM employees; DECLARE TYPE num_...

    bulk collect学习

    另外,与 Bulk Collect 相关的还有 FORALL 语句,它用于执行批处理操作,如批量插入、删除和更新。FORALL 可以配合 INTO 集合一起使用,以高效地处理大量数据,尤其是在执行数据迁移或批量更新等操作时。 总结来说...

    浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献

    本篇文章将深入探讨PL/SQL中的两种关键批处理语句:BULK COLLECT 和 FORALL,以及它们如何帮助减少上下文切换,提升效率。 1. **BULK COLLECT**: - **用法**:BULK COLLECT 是一种从查询结果集中批量加载数据到...

    PL_SQL_

    - **高效性**:支持批量数据处理,如FORALL和BULK COLLECT语句。 - **可移植性**:PL/SQL语法在不同的Oracle版本之间保持一致,易于迁移。 - **与SQL紧密结合**:PL/SQL可以直接调用SQL语句,无需额外的接口。 - **...

    oracle(9i)pl_sql+oracle(11g)pl_sql参考手册

    7. **高级游标特性**:如 bulk collect 和 FORALL 语句,提高了批量处理数据的效率。 8. **存储过程性能优化**:如使用绑定变量、存储过程缓存等。 9. **动态SQL**:通过EXECUTE IMMEDIATE和DBMS_SQL包执行动态SQL...

    for all 用法小结

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

    pl_sql_编程实例

    7. **update_rows.sql**:可能包含批量更新多行数据的示例,可能利用了BULK COLLECT和FORALL语句提高性能。 8. **while_loop2.sql**:展示了WHILE循环的使用,这是PL/SQL中用于重复执行代码块直到特定条件不再满足...

    oracle下巧用bulk collect实现cursor批量fetch的sql语句

    本文将深入讲解如何在PL/SQL中使用Bulk Collect实现Cursor的批量Fetch,并探讨其优化效果和使用技巧。 首先,了解基本的Bulk Collect语法。在提供的示例代码中,我们看到声明了一个Cursor `c1` 来查询表 `t_depart`...

    JAVA 与 Sql学习笔记

    【JAVA与Sql学习笔记】 ...总之,学习并熟练掌握FORALL、批绑定、BULK COLLECT等特性,对于Java程序员在处理大量数据时能更高效地与Oracle数据库进行交互,同时了解SQL优化策略也是提升数据库应用性能的关键。

    High Performance PL/SQL from Steven Feuerstein

    Steven Feuerstein在这份材料中介绍了几种提高PL/SQL性能的关键技术,包括函数结果缓存、BULK COLLECT与FORALL、NOCOPY hint以及UDF Pragma等。通过合理应用这些技术,可以显著提升PL/SQL应用程序的运行效率,减少...

    Oracle_SQL学习笔记

    - 使用 `FORALL` 进行批量插入、更新或删除操作。 - 示例: ```sql FORALL i IN 1..x.COUNT INSERT INTO t (column1, column2) VALUES (x(i).column1, x(i).column2); ``` - **BULK COLLECT**: - 使用 `BULK ...

    Oracle_SQL性能优化技巧大总结

    4. **减少数据库访问次数**:尽量合并多次数据库访问,例如使用BULK COLLECT和FORALL操作批量处理数据,以减少网络I/O和服务器负载。 5. **设置ARRAYSIZE参数**:在SQL工具中如SQL*Plus,适当增大ARRAYSIZE可以一次...

    PL_SQL软件使用指南

    6. ** Bulk COLLECT 和 FORALL**:用于批量处理数据,提高性能。 三、游标与集合 7. **游标**:允许程序逐行处理查询结果。声明游标、打开游标、提取数据、关闭游标是其基本步骤。 8. **集合**:PL/SQL提供了嵌套...

    forall 用法小结

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

    Oracle BULK COLLECT批量取数据解决方法

    在Oracle数据库中,BULK COLLECT 还可以与其他操作结合使用,如BULK INSERT用于批量插入数据,或者与FORALL一起使用,进行批量更新或删除。这些技术通常在处理大数据量时,能显著提升应用程序的性能,并减少资源消耗...

    Oracle10g_PL_SQL_编程

    11. **游标聚合函数**:学习使用BULK COLLECT INTO和FORALL语句进行批量操作,提高处理大量数据时的效率。 通过这个Oracle 10g PL/SQL教程,开发者可以深入理解PL/SQL的精髓,从而更好地进行数据库应用开发,提升...

    Oracle PL/SQL的大量操作

    例如,使用`BULK COLLECT`和`FORALL`语句来批量插入或更新数据,可以减少网络延迟并优化内存使用。 ```sql DECLARE TYPE emp_tab_type IS TABLE OF employees%ROWTYPE INDEX BY PLS_INTEGER; emp_tab emp_tab_...

Global site tag (gtag.js) - Google Analytics