获取oracle.sql.array

时间:2015-08-10 11:49:51

标签: sql arrays oracle

在Oracle DB上,我有一个带有SDO_GEOMETRY对象的表。我想查询数据库中边缘小于x的多边形。从理论上讲,使用像

这样的查询会很容易
SELECT * FROM myTable t WHERE LENGTH(t.geometry.sdo_ordinates) < x

显然,LENGTH函数是为char和类型定义的 t.geometry.sdo_ordinates是oracle.sql.ARRAY,因此无法正常工作。难道不可能有一种简单的方法来选择Oracle中的长度或数组吗?不知怎的,我无法正确使用语法。

PS:我用以下查询解决了我的搜索问题,原来的问题仍然存在,是不是有数组大小/长度函数?

SELECT * FROM myTable t WHERE LENGTH(t.geomety.Get_WKT()) < (x * c)

1 个答案:

答案 0 :(得分:1)

不,没有简单的sql函数可以计算数组的元素。

然而如前面提到的here,另一个想法是PL / SQL脚本。

create or replace function get_count(ar in SDO_ORDINATE_ARRAY) return number is
begin
   return ar.count;
end get_count;

t.geometry.sdo_ordinates.COUNT是一个PL / SQL attribute,可以在函数/过程中使用。因此,不是普通SQL中可用的函数

属性:

value.someAttribute

功能:

doSomething(value)

澄清:函数有返回值,程序没有。 Source