DECLARE
CURSOR emp_cur IS
SELECT empno,
ename,
hiredate
FROM scott.emp;
TYPE emp_rec_type IS RECORD(
empno scott.emp.empno%TYPE,
ename scott.emp.ename%TYPE,
hiredate scott.emp.hiredate%TYPE);
TYPE nested_emp_type IS TABLE OF emp_rec_type; -->定义了基于记录的嵌套表
emp_tab nested_emp_type; -->定义集合变量,此时未初始化
v_limit PLS_INTEGER := 5; -->定义了一个变量来作为limit的值
v_counter PLS_INTEGER := 0;
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur BULK COLLECT
INTO emp_tab -->fetch时使用了BULK COLLECT子句
LIMIT v_limit; -->使用limit子句限制提取数据量
EXIT WHEN emp_tab.COUNT = 0; -->注意此时游标退出使用了emp_tab.COUNT,而不是emp_cur%notfound
v_counter := v_counter + 1; -->记录使用LIMIT之后fetch的次数
FOR i IN emp_tab.FIRST .. emp_tab.LAST LOOP
DBMS_OUTPUT.put_line('Current record is ' || emp_tab(i)
.empno || CHR(9) || emp_tab(i)
.ename || CHR(9) || emp_tab(i).hiredate);
END LOOP;
END LOOP;
CLOSE emp_cur;
DBMS_OUTPUT.put_line('The v_counter is ' || v_counter);
END;