If you have ever used Perl you will familiar with the term 'associative array'. If you're not a Perl user, then think of them as the ability to index an array with something other than a numeric datatype. Since 7.2, Oracle has always hinted that this might be coming with PL/SQL with the "INDEX BY BINARY_INTEGER" option on PL/SQL tables. We now have the additional option of "INDEX BY VARCHAR2(n)".
Funtionally they appear to work fine, although they are a little slower than the binary integer equivalents.
SQL> set serverout on SQL> declare 2 type vtab is table of number 3 index by varchar2(100); 4 p ntab; 5 type ntab is table of number 6 index by binary_integer; 7 p1 vtab; 8 q number; 9 begin 10 q := dbms_utility.get_time; 11 for i in 1 .. 100000 loop 12 p(i) := i; 13 end loop; 14 dbms_output.put_line(dbms_utility.get_time-q); 15 q := dbms_utility.get_time; 16 for i in 1 .. 100000 loop 17 p1('STUFF'||i) := i; 18 end loop; 19 dbms_output.put_line(dbms_utility.get_time-q); 20 end; 21 / 113 144 PL/SQL procedure successfully completed. SQL> / 105 <=== conventional indexing 132 <=== varchar indexing PL/SQL procedure successfully completed. SQL> / 105 131 PL/SQL procedure successfully completed.