Login
Register

Home

Trainings

Fusion Blog

EBS Blog

Authors

CONTACT US

Anshuman Ghosh
  • Register

Oracle Gold Partners, our very popular training packages, training schedule is listed here
Designed by Five Star Rated Oracle Press Authors & Oracle ACE's.

webinar new

Search Courses

×

Warning

JUser: :_load: Unable to load user with ID: 868

This post is relevant in context of bulk operations we do in PLSQL (mostly as part of processes or batch jobs. A practical example is, having a cursor which returns a BIG collection of data, which then has to be processed row by row.

 

Without using Bulk Collect

The slow (read inefficient) way to do it is to read the cursor row by row, and process the data.

 


Example-

DECLARE
my_sal emp.sal%TYPE;
CURSOR c1 IS SELECT sal FROM emp WHERE job = my_job;
BEGIN
...
OPEN c1;
LOOP
FETCH c1 INTO my_sal;
EXIT WHEN c1%NOTFOUND;
bonus := sal * 0.15;
... further processing (business logic)
...
...
END LOOP;
END;

 

Using Bulk Collect

When using bulk collect, the complete cursor data is fetched into a collection in 1 shot, thereby saving of multiple reads from cursor (and the associated overhead time consumed in context switching between SQL fetches and PLSQL program process).

Example-

PROCEDURE process_all_rows
IS
TYPE employees_collection
IS TABLE OF employees%ROWTYPE
INDEX BY PLS_INTEGER;
l_employees employees_collection;
BEGIN
SELECT *
BULK COLLECT INTO l_employees
FROM employees;

FOR indx IN 1 .. l_employees.COUNT
LOOP
my_function_call(l_employees(indx));
END LOOP;
END process_all_rows;

 

Performance metrics

If you wish to have real time metrics of advantages of using bulk_collect, we can do so by timing the processes - once using normal cursor operation and once using bulk collect.


Comments   

0 #1 Kallepalli Sridhar 2008-05-04 23:09
Hi Anil

Can you please guide me how to use DBMS_SCHEDULER for a stored procedure where the frquency for the program should be for every three min.

Regards
S ridhar
Quote
0 #2 nani 2008-05-26 07:29
Hi ghosh,

Thanks a lot for guidence on bulk collect
Quote
0 #3 needhelp 2008-05-30 06:23
Nice explaination regarding BULK COLLECTION. I want some tips regarding how to write query in distributed database..? how many main drawbacks should be keep in mind when writing query.? Because due to it sometime query takes so much time to fetch single record even.
Quote
0 #4 Surinder Singh 2008-06-03 01:02
how an plsql table can be used in select and i want to send it as trhrough refcursor as out parameter can u explain it
Quote
0 #5 Anshuman Ghosh 2008-06-03 01:33
Venki,

In the bulk collect example given above, "l_employees" is indeed a pl/sql table.

TYPE employees_colle ction IS TABLE OF employees&#xRO; WTYPE INDEX BY PLS_INTEGER;
l_employees employees_colle ction;

Followed by -
SELECT * BULK COLLECT INTO l_employees FROM employees;

I shall post a new article on usage of refcursors..
Quote

Add comment


Security code
Refresh

Search Trainings

Fully verifiable testimonials

Apps2Fusion - Event List

<<  Apr 2024  >>
 Mon  Tue  Wed  Thu  Fri  Sat  Sun 
  1  2  3  4  5  6  7
  8  91011121314
15161718192021
22232425262728
2930     

Enquire For Training

Fusion Training Packages

Get Email Updates


Powered by Google FeedBurner