【问题标题】:Get length of oracle.sql.array获取 oracle.sql.array 的长度
【发布时间】:2015-11-02 07:42:30
【问题描述】:

在 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)

【问题讨论】:

  • 你试过用:t.geometry.sdo_ordinates.COUNT
  • 是的,我实际上尝试过t.geometry.sdo_ordinates.COUNT,但它不起作用。

标签: sql arrays oracle


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2015-08-14
    相关资源
    最近更新 更多