CREATE OR REPLACE FUNCTION f_1() RETURN INTEGER IS
v_result INTEGER;
v_emp_id NUMBER(6);
v_emp_name VARCHAR2(48);
CURSOR cur1 IS
SELECT emp_id,
emp_name
FROM employee_master;
TYPE ty_empl IS TABLE OF cur1%ROWTYPE INDEX BY PLS_INTEGER;
tab_empl ty_empl;
BEGIN
OPEN cur1;
<<cur1_loop>>
LOOP
FETCH cur1 BULK COLLECT
INTO tab_empl LIMIT 5000;
EXIT WHEN tab_empl.count = 0;
<<empl_loop>>
FOR indx IN 1 .. tab_empl.count LOOP
v_emp_id := tab_empl(indx).emp_id;
v_emp_name := substr(tab_empl(indx).emp_name;
1, 10);
.. .. .. .. .. .. .. .. .
RETURN(v_result);
END f_1;