Je pense que vous pouvez le faire avec une seule requête :
select s.id, count(*)
from spatial_data s, table(s.geometry.sdo_ordinates)
group by s.id
ou vous pouvez écrire une fonction plsql simple qui renvoie l'attribut count du SDO_ORDINATE_ARRAY VARRAY :
create or replace function get_count(ar in SDO_ORDINATE_ARRAY) return number is
begin
return ar.count;
end get_count;
ou encore mieux ajouter une fonction membre à SDO_GEOMETRY TYPE qui renvoie l'attribut count