Синтаксис для заполнения коллекции из запроса SQL:
select x bulk collect into y from z;
В 12.2 (и, возможно, в 12.1, хотя и не проверено) работает следующее:
create or replace function selectIndices
( tlngIndexList in dbms_sql.number_table )
return number
as
tlngUniqueIndices dbms_sql.number_table;
begin
select distinct column_value bulk collect into tlngUniqueIndices
from table(tlngIndexList);
return tlngUniqueIndices.count;
end selectIndices;
В более ранних версиях выможно попробовать использовать значения коллекции в качестве индексов второй коллекции для дедупликации:
create or replace function selectIndices
( tlngIndexList in dbms_sql.number_table )
return number
as
tlngUniqueIndices dbms_sql.number_table;
i pls_integer := tlngIndexList.first;
begin
while i is not null loop
tlngUniqueIndices(tlngIndexList(i)) := tlngIndexList(i);
i := tlngIndexList.next(i);
end loop;
return tlngUniqueIndices.count;
end selectIndices;