SDO_GEOMETRY 不接受变量
SDO_GEOMETRY not accepting variables
我正在尝试显示位置之间的距离,但是,当使用从用户输入的邮政编码处理的 l_lng
和 l_lat
变量时,我收到以下错误- ORA-13032: Invalid NULL SDO_GEOMETRY object
这不是 UPDATE
的问题,因为当我输入纬度和经度值时,会计算距离。此外,在显示 l_lng
和 l_lat
变量中保存的纬度和经度值时,它们也是正确的。
DECLARE
l_lat VARCHAR2(100);
l_lng VARCHAR2(100);
l_postcode VARCHAR2(8) := :P2_POSTCODE;
BEGIN
brian.GEOCODE_GM_XML (:P2_POSTCODE, l_lat, l_lng);
UPDATE RESTAURANTS
SET DISTANCE = (SELECT SDO_GEOM.SDO_DISTANCE(
restaurants.location,
SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(l_lng, l_lat, null), null, null),
0.005, 'unit=mile') distance
FROM restaurants WHERE restaurants.restaurant_id = 36);
htp.p(l_lat);
htp.p(l_lng);
END;
我有没有犯错?
- 从
varchar2
更改 l_lat
和 l_lng
的变量声明
至 number
.
- 我假设
restaurants.distance
列的类型是 number
。
- 验证几何图形是否具有有效字段。指定 NULL
几何,将整个
SDO_GEOMETRY
指定为
NULL 而不是将每个字段设置为 NULL。对于 l_lat
和
l_lng
个 SDO_POINT_TYPE
。
我正在尝试显示位置之间的距离,但是,当使用从用户输入的邮政编码处理的 l_lng
和 l_lat
变量时,我收到以下错误- ORA-13032: Invalid NULL SDO_GEOMETRY object
这不是 UPDATE
的问题,因为当我输入纬度和经度值时,会计算距离。此外,在显示 l_lng
和 l_lat
变量中保存的纬度和经度值时,它们也是正确的。
DECLARE
l_lat VARCHAR2(100);
l_lng VARCHAR2(100);
l_postcode VARCHAR2(8) := :P2_POSTCODE;
BEGIN
brian.GEOCODE_GM_XML (:P2_POSTCODE, l_lat, l_lng);
UPDATE RESTAURANTS
SET DISTANCE = (SELECT SDO_GEOM.SDO_DISTANCE(
restaurants.location,
SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(l_lng, l_lat, null), null, null),
0.005, 'unit=mile') distance
FROM restaurants WHERE restaurants.restaurant_id = 36);
htp.p(l_lat);
htp.p(l_lng);
END;
我有没有犯错?
- 从
varchar2
更改l_lat
和l_lng
的变量声明 至number
. - 我假设
restaurants.distance
列的类型是number
。 - 验证几何图形是否具有有效字段。指定 NULL
几何,将整个
SDO_GEOMETRY
指定为 NULL 而不是将每个字段设置为 NULL。对于l_lat
和l_lng
个SDO_POINT_TYPE
。