使用存储过程保存点串过长的st_geometry对象

使用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

你可能感兴趣的:(存储过程)