PL SQL Oracle PLSQL

SQL>
SQL> SET ECHO ON
SQL> SET SERVEROUTPUT ON SIZE 1000000
SQL>
SQL> 
SQL> CREATE OR REPLACE TYPE unitType
  2    AS VARRAY(13) OF VARCHAR2(5 CHAR);
  3  /
Type created.
SQL>
SQL> 
SQL> CREATE OR REPLACE TYPE categoryType
  2    AS VARRAY(4) OF VARCHAR2(8 CHAR);
  3  /
Type created.
SQL>
SQL> 
SQL> CREATE OR REPLACE TYPE charArrayType
  2    AS TABLE OF VARCHAR2(17 CHAR);
  3  /
Type created.
SQL>
SQL> DECLARE
  2
  3    counter INTEGER := 0;
  4
  5    
  6    suits categoryType :=categoryType('A','B','C','D');
  7
  8    
  9    units unitType :=unitType('Ace','Two','Three','Four','Five','Six','Seven');
 10
 11    
 12    charArray charArrayType := charArrayType();
 13
 14  BEGIN
 15    FOR i IN 1..suits.COUNT LOOP
 16      FOR j IN 1..units.COUNT LOOP
 17
 18        counter := counter + 1;
 19        charArray.EXTEND;
 20
 21        
 22        charArray(counter) := units(j)||' of '||suits(i);
 23
 24      END LOOP;
 25
 26    END LOOP;
 27
 28    FOR i IN 1..counter LOOP
 29      dbms_output.put_line('['||charArray(i)||']');
 30    END LOOP;
 31
 32  END;
 33  /
[Ace of A]
[Two of A]
[Three of A]
[Four of A]
[Five of A]
[Six of A]
[Seven of A]
[Ace of B]
[Two of B]
[Three of B]
[Four of B]
[Five of B]
[Six of B]
[Seven of B]
[Ace of C]
[Two of C]
[Three of C]
[Four of C]
[Five of C]
[Six of C]
[Seven of C]
[Ace of D]
[Two of D]
[Three of D]
[Four of D]
[Five of D]
[Six of D]
[Seven of D]
PL/SQL procedure successfully completed.
SQL>