我在 Oracle 18c 中有一個現有的 SDO_GEOMETRY:
sdo_geometry(2003, null, null, sdo_elem_info_array(1, 1003, 1),
sdo_ordinate_array(665287.423,4857578.086, 676832.320,4878119.585))
在sdo_elem_info_array可變陣列中,我想用 3 替換最后的 1:
- 之前: (1, 1003, 1 )
- 之后: (1, 1003, 3 )
如何替換可變陣列中的該值sdo_elem_info_array?
uj5u.com熱心網友回復:
您可以創建用戶定義的函式并使用 PL/SQL 對其進行編輯:
WITH FUNCTION edit_info(i_geom SDO_GEOMETRY) RETURN SDO_GEOMETRY
IS
v_geom SDO_GEOMETRY := i_geom;
BEGIN
v_geom.SDO_ELEM_INFO(3) := 3;
RETURN v_geom;
END;
SELECT edit_info(
sdo_geometry(
2003,
null,
null,
sdo_elem_info_array(1, 1003, 1),
sdo_ordinate_array(665287.423, 4857578.086, 676832.320, 4878119.585)
)
)
FROM DUAL;
db<>在這里擺弄
uj5u.com熱心網友回復:
與@MTO 的解決方案類似,我想我也可以在查詢中執行此操作(無需自定義函式):
with cte as (
select sdo_geometry(2003, 26917, null, sdo_elem_info_array(1, 1003, 1), sdo_ordinate_array(665287.423, 4857578.086, 676832.320, 4878119.585)) shape
from dual)
select sdo_geometry(a.shape.sdo_gtype,
a.shape.sdo_srid,
a.shape.sdo_point,
sdo_elem_info_array(1, 1003, 3),
a.shape.sdo_ordinates) as shape
from cte a;
Result:
MDSYS.SDO_GEOMETRY(2003, 26917, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3), MDSYS.SDO_ORDINATE_ARRAY(665287.423, 4857578.086, 676832.32, 4878119.585))
有關的:
- 選擇物件屬性的技術
- 獲取物件的屬性
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488353.html
上一篇:必須宣告PLS00302組件
