zoukankan      html  css  js  c++  java
  • OracleSpatial 处理超过1000个点的几何对象时,报错Ora-00939: 函数的参数过多解决方法

    oracle空间字段mdsys.sdo_geometry存储多边形,报错ora-00939:to many arguments for function

    sql语句 
    update d_area set
    coordinate=mdsys.sdo_geometry(2003,8307,null,mdsys.sdo_elem_info_array(1,1003,1),
    mdsys.sdo_ordinate_array(
    119.65415,29.14556,119.64824,....))
    where id=123;
    坐标少时更新没有问题,如果坐标对多了就会报错ora-00939:to many arguments for function;
    用什么方式替代解决呢?

    据说这是一个SQL级别的限制,当SDO_ORDINATES数组中插入一个超过1000个坐标的SDO_GEOMETRY时,可能引发该错误。
    可以通过创建一个保存该几何体的PL/SQL变量(在下面的代码中被称为geom)来避免这一错误,之后将该变量绑定到update SQL语句中:

    CREATE OR REPLACE PROCEDURE p_test is 
    DECLARE  geom mdsys.sdo_geometry; -- PL/SQL variable to store the geometry with >999 ordinates 
    BEGIN 
      -- construct the geometry here 
      geom := mdsys.sdo_geometry(2003, 
                                 8307, 
                                 null, 
                                 mdsys.sdo_elem_info_array(1, 1003, 1), 
                                 mdsys.sdo_ordinate_array(119.65415, 
                                                          29.14556, 
                                                          119.64824 
                                                          --,....写全多个坐标值 
                                                          )); 
     
      -- update the geometry in the d_area table using dynamic SQL 
      EXECUTE IMMEDIATE 'update d_area set 
    coordinate=:gm where id = 123' 
        USING geom; 
    END; 

  • 相关阅读:
    jquery 动态选中radio
    在Struts2的Action中取得请求参数值的几种方法
    Collections类sort方法的用法
    struts2 action 之间跳转
    JavaScript 解析 xml 文件 如 rss订阅
    jquery 获取 选中的checkbox的值
    velocity 时间显示 时间格式化 时间转化
    firefox3.6 ie8 jQuery选择checkbox
    IFormattedTextSymbol接口 设定Anchor点的水平或者垂直对其方式
    gisbase网站,因其购买的空间提供商,“涉黄”暂行关闭。
  • 原文地址:https://www.cnblogs.com/mol1995/p/12185930.html
Copyright © 2011-2022 走看看