【发布时间】:2022-06-10 16:57:41
【问题描述】:
甲骨文 18c:
我可以在自定义 PL/SQL 函数中使用 SHAPE.SDO_ORDINATES(1) 从 SDO_GEOMETRY 中提取起点 X 坐标:
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 查询中无效?
【问题讨论】:
标签: sql oracle attributes oracle18c oracle-spatial