HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Retrieve Indices of Associative Array as Collection

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
indicesarraycollectionretrieveassociative

Problem

In PL/SQL, suppose I have some associative array defined as follows:

declare 
       type a_arr_t is table of PLS_INTEGER index by PLS_INTEGER;
       a_arr a_arr_t;


I then, sparsely, populate the array as follows:

begin
      a_arr(1)   := 2;
      a_arr(10)  := 4;
      a_arr(100) := 6;
end;


Is there some operator or function that can give me the indices of the array, (1,10,100) as a collection of some sort, something like indices of in a forall statement?

Solution

Is there some operator or function that can give me the indices of the array

No, you have to loop through the associative array:

declare
type a_arr_t is table of PLS_INTEGER index by PLS_INTEGER;
type keys_t is table of PLS_INTEGER;
a_arr a_arr_t;
keys_ keys_t := keys_t();
l_index integer;
begin
a_arr(1) := 2;
a_arr(10) := 4;
a_arr(100) := 6;

l_index := a_arr.first;
while (l_index is not null)
loop
keys_.extend();
keys_(keys_.count):=l_index;
dbms_output.put_line(keys_(keys_.count));
l_index := a_arr.next(l_index);
end loop;
end;
/

/*
1
10
100
*/

Context

StackExchange Database Administrators Q#22139, answer score: 7

Revisions (0)

No revisions yet.