1つのクエリでそれを実行できると思います:
select s.id, count(*)
from spatial_data s, table(s.geometry.sdo_ordinates)
group by s.id
または、SDO_ORDINATE_ARRAYVARRAYのcount属性を返すplsqlの単純な関数を記述できます。
create or replace function get_count(ar in SDO_ORDINATE_ARRAY) return number is
begin
return ar.count;
end get_count;
または、カウント属性を返すメンバー関数をSDO_GEOMETRYTYPEに追加することもできます