Myślę, że możesz to zrobić za pomocą jednego zapytania:
select s.id, count(*)
from spatial_data s, table(s.geometry.sdo_ordinates)
group by s.id
lub możesz napisać prostą funkcję plsql, która zwraca atrybut count zmiennej SDO_ORDINATE_ARRAY:
create or replace function get_count(ar in SDO_ORDINATE_ARRAY) return number is
begin
return ar.count;
end get_count;
a nawet ładniej dodaj funkcję składową do SDO_GEOMETRY TYPE, która zwraca atrybut count