【发布时间】:2021-04-08 06:01:51
【问题描述】:
我在包内创建存储过程。我想在 sdo_geometry 对象中存储一个由 lat/lng 组成的点数组。
首先在包内声明类型
TYPE p_int_type IS TABLE OF number;
然后定义过程定义。
PROCEDURE PRC_POLYGON_ADD_TESTING(
pPointArray IN p_int_type,
pCODE OUT VARCHAR2,
pDesc OUT VARCHAR2,
pMSG OUT VARCHAR2 );
这是我的程序主体
PROCEDURE PRC_POLYGON_ADD_TESTING
(
pPointArray IN p_int_type,
pCODE OUT VARCHAR2,
pDesc OUT VARCHAR2,
pMSG OUT VARCHAR2
)
AS
BEGIN
INSERT
INTO CIRCLE_LOCATION
(
polygon
)
VALUES
(
sdo_geometry ( 2003 -- 2D Polygon
, 4326 -- WGS84, the typical GPS coordinate system
, NULL -- sdo_point_type, should be NULL if sdo_ordinate_array specified
, sdo_elem_info_array( 1 -- First ordinate position within ordinate array
, 1003 -- Exterior polygon
, 1 -- All polygon points are specified in the ordinate array
) , sdo_ordinate_array(pPointArray))
);
END PRC_POLYGON_ADD_TESTING;
但我收到错误,这里不允许使用本地集合类型。 请指导我如何在 sdo_geometry 对象中保存由点 lat/lng 组成的完整数组。点是动态的,这就是我想使用数组的原因。
【问题讨论】:
标签: oracle stored-procedures oracle11g oracle-spatial