Ассоциативные массивы
Вариант вложенной таблицы, в которой элементы могут иметь произвольные значения индексов, расположенные в определенном порядке.
Позволяет работать со столбцами как с единой переменной — массивом.
Является временной формой коллекции, существует в течении сессии.
Другое название ассоциативных массивов — индексированные таблицы или 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
Ограничения:
Нельзя создать тип ассоциативного массива на уровне схемы:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> CREATE OR REPLACE TYPE xx_test_type IS TABLE OF NUMBER INDEX BY PLS_INTEGER 2 / Warning: Type created with compilation errors Предупреждение: Тип создан с ошибками компиляции. SQL> show errors Ошибки для TYPE XX_TEST_TYPE: LINE/COL ERROR -------- ----------------------------------------------------------------- 0/0 PL/SQL: Compilation unit analysis terminated 1/22 PLS-00355: использование таблицы pl/sql не разрешается в этом контексте
Последние комментарии