DamoN达梦之旅

A little everyday! Concern about GIS、ArcGIS、Open Source GIS...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用sql方式插入st_geometry对象的时候,如果点串超过4000字符,oracle会报字符串过长的错误,无法写入,使用存储过程可以解决这个问题

以下是存储过程。

CREATE OR REPLACE PROCEDURE PROC_INSERT_POLYGON(SRID IN INTEGER,OBJECTID IN INTEGER,POLYTEXT IN CLOB)
IS
   GEOM SDE.ST_GEOMETRY;
BEGIN
   GEOM:=SDE.ST_POLYFROMTEXT(POLYTEXT,SRID);
   INSERT INTO SDE.GRID (OBJECTID,SHAPE) VALUES(OBJECTID,GEOM);
END PROC_INSERT_POLYGON;

 

在Java中调用存储过程写入的代码如下:

String DB_URI = "jdbc:oracle:thin:@IP_ADDRESS:1521:teleora";
String USER = "sde";
String PASSWD = "sde";
String longGeometryText = "巨长的点串";

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection(DB_URI, USER, PASSWD);

CallableStatement statement = connection.prepareCall("{call PROC_INSERT_POLYGON{?,?,?}}");
statement.setInt(1, srid);
statement.setInt(2, objectid);
statement.setString(3, longGeometryText);

statement.execute();

 

参考网址:http://blog.csdn.net/linghe301/article/details/6622399

posted on 2011-08-01 14:10  Damon S.  阅读(787)  评论(0编辑  收藏  举报