SDO_GEOMETRY 不接受变量

SDO_GEOMETRY not accepting variables

我正在尝试显示位置之间的距离,但是,当使用从用户输入的邮政编码处理的 l_lngl_lat 变量时,我收到以下错误- ORA-13032: Invalid NULL SDO_GEOMETRY object

这不是 UPDATE 的问题,因为当我输入纬度和经度值时,会计算距离。此外,在显示 l_lngl_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_latl_lng 的变量声明 至 number.
  • 我假设 restaurants.distance 列的类型是 number
  • 验证几何图形是否具有有效字段。指定 NULL 几何,将整个 SDO_GEOMETRY 指定为 NULL 而不是将每个字段设置为 NULL。对于 l_latl_lngSDO_POINT_TYPE