Mega Code Archive

 
Categories / Oracle PLSQL / PL SQL
 

Initialization and assignment with a unique string index value to an associative array

SQL> SQL> SET ECHO ON SQL> SET SERVEROUTPUT ON SIZE 1000000 SQL> SQL> DECLARE   2   3    current VARCHAR2(9 CHAR);   4    element INTEGER;   5   6    TYPE months_varray IS VARRAY(12) OF STRING(9 CHAR);   7   8    TYPE calendar_table IS TABLE OF VARCHAR2(9 CHAR)INDEX BY VARCHAR2(9 CHAR);   9  10    month MONTHS_VARRAY := months_varray('January','February','March','April','May','June','July','August');  11  12    calendar CALENDAR_TABLE;  13  14  BEGIN  15  16    IF calendar.COUNT = 0 THEN  17  18      FOR i IN month.FIRST..month.LAST LOOP  19  20        calendar(month(i)) := TO_CHAR(i);  21  22        DBMS_OUTPUT.PUT_LINE('Index :'||month(i)||' is '||i);  23  24      END LOOP;  25      FOR i IN 1..calendar.COUNT LOOP  26  27        IF i = 1 THEN  28  29          current := calendar.FIRST;  30  31          element := calendar(current);  32  33        ELSE  34  35          IF calendar.NEXT(current) IS NOT NULL THEN  36  37            current := calendar.NEXT(current);  38  39            element := calendar(current);  40  41          ELSE  42  43            EXIT;  44  45          END IF;  46  47        END IF;  48  49        DBMS_OUTPUT.PUT_LINE('Index :'||current||' is '||element);  50  51      END LOOP;  52  53    END IF;  54  55  END;  56  / Index :January is 1 Index :February is 2 Index :March is 3 Index :April is 4 Index :May is 5 Index :June is 6 Index :July is 7 Index :August is 8 Index :April is 4 Index :August is 8 Index :February is 2 Index :January is 1 Index :July is 7 Index :June is 6 Index :March is 3 Index :May is 5 PL/SQL procedure successfully completed. SQL>