【问题标题】:SDO_GEOMETRY not accepting variablesSDO_GEOMETRY 不接受变量
【发布时间】:2017-12-04 21:06:52
【问题描述】:

我试图显示到位置之间的距离,但是,当使用从用户输入的邮政编码处理的 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;

我犯了什么错误吗?

【问题讨论】:

    标签: sql oracle plsql oracle-apex


    【解决方案1】:
    • varchar2 更改l_latl_lng 的变量声明 到number
    • 我认为restaurants.distance 列的类型是number
    • 验证几何图形是否具有有效字段。指定一个 NULL 几何,将整个SDO_GEOMETRY 指定为 NULL 而不是将每个字段设置为 NULL。看来您可能有一些值同时为 l_latl_lngSDO_POINT_TYPE

    【讨论】:

      猜你喜欢
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2015-06-12
      相关资源
      最近更新 更多