CREATE OR REPLACE PROCEDURE xx_AssocArr
AS
TYPE xx_AsscArr IS TABLE OF VARCHAR2(20)
INDEX BY PLS_INTEGER;
TYPE xx_AsscArr1 IS TABLE OF NUMBER
INDEX BY PLS_INTEGER;
TYPE xx_AsscArr2 IS TABLE OF VARCHAR2(40)
INDEX BY VARCHAR2(20);
TYPE xx_AsscArr3 IS TABLE OF NUMBER
INDEX BY VARCHAR2(20);
V1 xx_AsscArr;
V2 xx_AsscArr1;
V3 xx_AsscArr2;
V4 xx_AsscArr3;
i NUMBER;
J NUMBER;
z VARCHAR2(30);
BEGIN
dbms_output.put_line('Hi..');
/*Like in VARRAY and NESTED TABLE
associative array doesn't require
initialization directly values
can be assigned*/
--These are also called as key-value pairs
--v1 has values of string type and indexed by integer
v1(1000):='Vizag';
v1(1500):='Hyderabad';
v1(-100):='Atlanta';
dbms_output.put_line('FIRST INDEX of V1 : '||v1.FIRST);
dbms_output.put_line('LAST INDEX of V1 : '||v1.LAST);
dbms_output.put_line('count of V1 : '||v1.COUNT);
IF (v1.EXISTS(-100)) THEN
dbms_output.put_line('Element exists at index -100 : '|| v1(-100));
ELSE
dbms_output.put_line('Element does not exist');
END IF;
dbms_output.put_line('Index prior to element at 1000 : '||v1.PRIOR(1000));
dbms_output.put_line('Index next to element at 1000 : '||v1.NEXT(1000));
dbms_output.put_line('Printing V1');
j:=v1.FIRST;
WHILE j is NOT NULL LOOP
dbms_output.put_line('Element at index # '||j||' '||v1(j));
j:=v1.NEXT(j);
END LOOP;
v1.DELETE(1000);
dbms_output.put_line('Printing V1');
j:=v1.FIRST;
WHILE j is NOT NULL LOOP
dbms_output.put_line('Element at index # '||j||' '||v1(j));
j:=v1.NEXT(j);
END LOOP;
dbms_output.put_line('Working on V3');
/*v3 has values of string and indexed by strings!!
*/
v3('vizag'):='This is vizag city';
v3('pune'):='This is pune city';
v3('banglore'):='This is blore city';
dbms_output.put_line('Printing V3');
z:=v3.FIRST;
WHILE z is NOT NULL LOOP
dbms_output.put_line('Element at index # '||z||' '||v3(z));
z:=v3.NEXT(z);
END LOOP;
v3.DELETE('pune');
dbms_output.put_line('Printing V3');
z:=v3.FIRST;
WHILE z is NOT NULL LOOP
dbms_output.put_line('Element at index # '||z||' '||v3(z));
z:=v3.NEXT(z);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error is : '||SQLERRM);
END xx_AssocArr;
/