declare type ary is table of dept%rowtype index by pls_integer; dept_ary ary; inum pls_integer; begin for i in 1 .. 4 loop inum := i * 10; --先向数组里面填充数据 每次取一条数据填充到数组(i); select * into dept_ary(i) from dept where dept.deptno = inum; dbms_output.put_line(dept_ary(i).loc); end loop; for i in dept_ary.first .. dept_ary.last loop dbms_output.put_line('第' || i || '条数据:' || dept_ary(i).loc); end loop; end;
-- 使用显式游标 declare cursor e is select * from dept; type ary is table of dept%rowtype index by pls_integer; myary ary; idx pls_integer; begin open e; fetch e bulk collect into myary; close e; idx := myary.first; while (idx is not null) loop dbms_output.put_line('record of deptno : ' || myary(idx).deptno); idx := myary.next(idx); end loop; end;
declare type ary is table of dept%rowtype index by pls_integer; dept_ary ary; aryindex pls_integer; begin -- 使用 bulk collect 批量插入到数组(内存) select dept.* bulk collect into dept_ary from dept; dbms_output.put_line('总记录数:' || dept_ary.count); aryindex := dept_ary.last; dbms_output.put_line('最后一条: ' || dept_ary(aryindex).dname); aryindex := dept_ary.first; while (aryindex is not null) loop dbms_output.put_line('第' || aryindex || '条数据:' || dept_ary(aryindex) .dname); aryindex := dept_ary.next(aryindex); end loop; end;