甲骨文18c:
我可以使用 SDO_GEOMETRY 提取起点 X 坐标SHAPE.SDO_ORDINATES(1)
在自定义 PL/SQL 函数中:
with
function startpoint_x(shape in sdo_geometry) return number
is
begin
return
shape.sdo_ordinates(1);
end;
select
startpoint_x(shape) as startpoint_x
from
(select sdo_geometry('linestring(1 2, 3 4, 5 6)') as shape
from dual)
STARTPOINT_X
------------
1
但如果我尝试纯粹在 SQL 查询中执行此操作,则会收到错误:
select
(shape).sdo_ordinates(1) as startpoint_x
from
(select sdo_geometry('linestring(1 2, 3 4, 5 6)') as shape
from dual)
ORA-00904: "MDSYS"."SDO_GEOMETRY"."SDO_ORDINATES": invalid identifier
对于它的价值,如果我要删除 (1) 并选择整个sdo_ordinates
属性,那么就可以了:
select
(shape).sdo_ordinates as ordinates
from
(select sdo_geometry('linestring(1 2, 3 4, 5 6)') as shape
from dual)
ORDINATES
------------------------
SDO_ORDINATE_ARRAY(1, 2)
数据库小提琴
但当然,这不是我想要的。我想以数字形式获取起点 X 坐标。
为什么SHAPE.SDO_ORDINATES(1)
可以在 PL/SQL 中工作,但不能在 SQL 查询中工作?
有点相关:从 GEOM_SEGMENT_START_PT() 获取 X 和 Y 坐标