`

oracle中bulk collect into用法

阅读更多
通过bulk collect减少loop处理的开销

采用bulk collect可以将查询结果一次性地加载到collections中。
而不是通过cursor一条一条地处理。
可以在select into,fetch into,returning into语句使用bulk collect。
注意在使用bulk collect时,所有的into变量都必须是collections.


举几个简单的例子:
--在select into语句中使用bulk collect
DECLARE
TYPE SalList IS TABLE OF emp.sal%TYPE;
sals SalList;
BEGIN
-- Limit the number of rows to 100.
SELECT sal BULK COLLECT INTO sals FROM emp
WHERE ROWNUM <= 100;
-- Retrieve 10% (approximately) of the rows in the table.
SELECT sal BULK COLLECT INTO sals FROM emp SAMPLE 10;
END;
/
--在fetch into中使用bulk collect
DECLARE
TYPE DeptRecTab IS TABLE OF dept%ROWTYPE;
dept_recs DeptRecTab;
CURSOR c1 IS
SELECT deptno, dname, loc FROM dept WHERE deptno > 10;
BEGIN
OPEN c1;
FETCH c1 BULK COLLECT INTO dept_recs;
END;
/
--在returning into中使用bulk collect
CREATE TABLE emp2 AS SELECT * FROM employees;
DECLARE
TYPE NumList IS TABLE OF employees.employee_id%TYPE;
enums NumList;
TYPE NameList IS TABLE OF employees.last_name%TYPE;
names NameList;
BEGIN
DELETE FROM emp2 WHERE department_id = 30
RETURNING employee_id, last_name BULK COLLECT INTO enums, names;
dbms_output.put_line('Deleted ' || SQL%ROWCOUNT || ' rows:');
FOR i IN enums.FIRST .. enums.LAST
LOOP
dbms_output.put_line('Employee #' || enums(i) || ': ' || names(i));
END LOOP;
END;
/
DROP TABLE emp2;
分享到:
评论

相关推荐

    Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据

    Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据 Oracle 中的游标数据读取是数据库开发中非常常见的操作。通常,我们使用 fetch some_cursor into var1, var2 形式来获取游标数据,当游标中的记录数...

    oracle批量处理(bulk collect)

    采用bulk collect可以将查询结果一次性地加载到collections中。而不是通过cursor一条一条地处理。可以在select into,fetch into,returning into语句使用bulk collect。注意在使用bulk collect时,所有的into变量都...

    使用BULK COLLECT, MERGE 语句提高sql执行效率

    详细介绍了使用 BULK COLLECT 进行批量操作 提高sql的执行效率 使用MERGE INTO USING 一条sql搞定 新增和修改 使用connect by 进行递归树查询

    bulk collect学习

    在 Oracle8i 中引入的 Bulk Collect 特性,适用于 select into、fetch into 和 returning into 语句。例如: 1. **在 select into 语句中使用 bulk collect**: 在这个示例中,我们创建了一个名为 SalList 的表...

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

    接着,使用 `bulk collect into` 语句从Cursor中一次性获取多行数据,并分别存入 `v_code` 和 `v_name` 集合中。最后,通过循环遍历集合并打印出数据。 更简洁的方法是,我们可以定义一个包含整个记录类型的集合,...

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

    Oracle BULK COLLECT 是一种在PL/SQL中用于优化数据处理的方法,特别是在处理大量数据时。这个特性允许一次性从数据库中获取多个记录,而不是传统的单行迭代方式,从而显著提高性能。在给定的示例代码中,展示了如何...

    Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    BULK COLLECT INTO`语句将查询结果直接存入这个数组中。在示例中,我们查询了所有父资金账户号为"320001054663"的房屋账户信息,并通过循环遍历数组`v_acct_table`来打印这些信息。这种方法减少了与数据库的交互...

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

    1. **在SELECT INTO语句中使用BULK COLLECT**: 当需要从表中获取多行数据时,传统的做法是通过游标(cursor)逐行处理。但使用BULK COLLECT,我们可以直接将结果集加载到集合中。例如: ```sql DECLARE TYPE ...

    Oracle Bulk Binds技术分析.pdf

    输出绑定使用`BULK COLLECT INTO`关键字,允许SQL引擎在返回结果给PL/SQL引擎前批量收集数据。这些数据可以是数量或复合值,如对象,被存储在INTO列表对应字段中。例如: ```sql SELECT ... BULK COLLECT INTO ...

    Oracle 遍历游标的四种方式汇总(for、fetch、while、BULK COLLECT)

    - BULK COLLECT允许一次从游标中提取多行数据,显著提高性能。之后,可以使用FORALL语句批量更新或插入这些行。 ```sql DECLARE TYPE T_CUR_FIRST_INDEX IS TABLE OF INDEX_A%ROWTYPE INDEX BY PLS_INTEGER; ...

    oracle SQL 语句插入数据

    在Oracle中,插入数据到表中的主要语句是`INSERT INTO`,它允许你将新记录添加到已存在的表中。下面我们将深入探讨Oracle SQL语句插入数据的相关知识点。 一、基本语法 Oracle SQL 插入数据的基本语法如下: ```...

    Oracle复习例题

    以上内容展示了Oracle数据库中游标的基本用法和高级特性,包括标准的FETCH INTO、BULK COLLECT INTO、记录类型变量、参数游标、游标FOR循环以及存储过程的创建。这些知识点对于理解Oracle数据库的复杂查询和数据处理...

    从Excel文件中读取数据到oracle

    如果数据量很大,直接插入可能会效率低下,这时可以考虑使用Oracle的BULK COLLECT INTO语句进行批量插入,以提高性能。 此外,如果在实际操作中遇到数据类型不匹配或其他问题,可能需要对数据进行预处理,如转换...

    Oracle 批查询

    bulk collect在 select ... into、fetch ... into、returning ... into中的应用。

    游标分批取数据例子

    默认情况下,`FETCH`语句会读取一行数据,但在高级用法中,我们可以结合`BULK COLLECT INTO`语句和`LIMIT`子句,一次读取多行数据,即实现分批读取。 ### 分批取数据示例解析 下面,我们通过分析给定的部分内容,...

    c#写的Excel导入Oracle源码

    6. **优化性能**:考虑到大量数据导入时的性能,可以考虑使用Oracle的BULK COLLECT INTO语句配合PL/SQL,或者使用Oracle的外部表功能,将Excel文件直接作为数据库表进行操作。 在提供的压缩包文件"excelToOracle"中...

    excel导入oracle数据库

    此外,还可以使用Oracle的BULK COLLECT INTO语法,将大量数据一次性加载到PL/SQL变量中,进一步提升导入速度。 总的来说,“Excel导入Oracle数据库”项目提供了从Excel文件向Oracle数据库导入数据的实用工具。这...

Global site tag (gtag.js) - Google Analytics