PL SQL Oracle PLSQL

SQL>
SQL> create table department
  2  ( dept_id       number(2),
  3    dept_name     varchar2(14),
  4    no_of_emps    varchar2(13)
  5  )
  6  /
Table created.
SQL>
SQL> INSERT INTO department VALUES (10, 'ACCOUNTING', 'NEW YORK');
1 row created.
SQL> INSERT INTO department VALUES (20, 'RESEARCH',   'DALLAS');
1 row created.
SQL> INSERT INTO department VALUES (30, 'SALES',      'CHICAGO');
1 row created.
SQL> INSERT INTO department VALUES (40, 'OPERATIONS', 'BOSTON');
1 row created.
SQL>
SQL>
SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON
SQL>
SQL> DECLARE
  2      CURSOR all_depts IS SELECT * FROM department ORDER BY dept_name;
  3
  4      TYPE dept_array IS VARRAY(100) OF department%ROWTYPE;
  5
  6      depts dept_array;
  7      inx1 PLS_INTEGER;
  8      inx2 PLS_INTEGER;
  9  BEGIN
 10      inx1 := 0;
 11
 12      depts := dept_array ();
 13
 14      FOR dept IN all_depts LOOP
 15          inx1 := inx1 + 1;
 16          depts.extend();
 17          depts(inx1).dept_id := dept.dept_id;
 18          depts(inx1).dept_name := dept.dept_name;
 19          depts(inx1).no_of_emps := dept.no_of_emps;
 20      END LOOP;
 21
 22      FOR inx2 IN 1..depts.count LOOP
 23          DBMS_OUTPUT.PUT_LINE (
 24              depts(inx2).dept_id ||
 25              ' ' || depts(inx2).dept_name);
 26      END LOOP;
 27  END;
 28  /
10 ACCOUNTING
40 OPERATIONS
20 RESEARCH
30 SALES
PL/SQL procedure successfully completed.
SQL>
SQL> drop table department;
Table dropped.
SQL>
SQL> --