Oracle 之 bulk collect 的用法
2009-10-11 12:21
302 查看
通过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学习总结三(bulk collect用法)
- oracle pl/sql(bulk collect用法)
- Oracle 的 bulk collect 和 forall 用法
- oracle中bulk collect用法
- Oracle 的 bulk collect用法——批量查询
- oracle学习总结三(bulk collect用法)
- Oracle 的 bulk collect用法——批量增删改
- Oracle 之 bulk collect 的用法
- Oracle 之 bulk collect 的用法
- Oracle创建分割函数,及用法
- Oracle 临时表、临时表空间、临时表空间组用法、区别及表空间组优点
- ORACLE CASE WHEN的用法与实现
- oracle中to_date,to_char,to_number用法
- (转)ORACLE WITH AS 用法
- 级别实现oracle case when 用法
- oracle中常用的字符串查找、替换以及截取函数的用法!
- oracle spool用法
- oracle 一些比较实用的用法
- Oracle中coalesce函数的用法
- Mysql中ifNull()/if()/case when用法和Oracle中nvl()/nvl2()/decode()的用法