Позволяет работать со столбцами как с единой переменной – массивом.
Является временной формой коллекции, существует в течении сессии.
Другое название ассоциативных массивов – индексированные таблицы или pl\sql таблицы.
Ассоциативный массив - это наиболее часто используемый вид коллекции. Его не надо инициализировать или расширять. В Oracle9i Database Release 2 и более поздних версиях ассоциативные массивы можно индексировать не только по числам, но и по строкам.
Пример 1: INDEX BY PLS_INTEGER
SQL> set serveroutput on size unlimited; SQL> DECLARE 2 TYPE XX_COST_TYPE IS TABLE OF NUMBER INDEX BY PLS_INTEGER; 3 cost XX_COST_TYPE; 4 l_res NUMBER; 5 BEGIN 6 cost(1) := 5 ; 7 cost(20) := 10 ; 8 cost(12) := 15 ; 9 l_res := cost(1) + cost(20) + cost(12); 10 DBMS_OUTPUT.PUT_LINE(l_res); 11 END; 12 / 30 PL/SQL procedure successfully completed
Пример 2: INDEX BY VARCHAR2
SQL> DECLARE 2 TYPE XX_COST_TYPE IS TABLE OF NUMBER INDEX BY VARCHAR2(100); 3 cost XX_COST_TYPE; 4 L_SELECTED VARCHAR2(100) := 'CHAIR'; 5 BEGIN 6 cost('TABLE') := 5000; 7 cost('CHAIR') := 84020 ; 8 cost('LAMP') := 8300; 9 cost('PENCIL'):= 110; 10 DBMS_OUTPUT.PUT_LINE(cost(L_SELECTED)); 11 END; 12 / 84020 PL/SQL procedure successfully completed
Отсюда.
В случае разряженных данных, как раз таки рекомендуют использовать ассоциативные массивы. На тесте пробовал - действительно так.
ОтветитьУдалить