我写了一条sql语句,用c#往oracle数据库中插入空间数据,执行后出现错误“ORA-01704: string literal too long”,
sql语句如下:其中红色........代表很长的坐标,sql总长度大概是19000多个字节。
insert into spatialdb.SPATIAL_AREA(OBJ_ID, OBJ_NAME, OBJ_DATE, OBJ_RZID, OBJ_COORD, OBJ_TYPE, DATAPRECISION, VIEWPRECISION, DATA_SOURCES)values('20050000000000004','无名称目标',to_date('2011-9-27 8:13:52','yyyy-mm-dd hh24:mi:ss'),'0',SDO_GEOMETRY('POLYGON ((119.164319033925 38.3470896280832, 119.160686681975 38.3494788931244, ........))',8307) ,'2005','0','0','10.200.250.98')请高人指教,我该怎么在c#处理一下这条sql语句让它可以执行过去呢?  

解决方案 »

  1.   

    SDO_GEOMETRY里用数组即可,不要用字符串
      

  2.   

    java3344520你好,请问怎么用数组?谢谢我现在用绑定也不行,也许我用的不正确,新手请多多指教!
      

  3.   

    都住可以使用C将
    SDO_GEOMETRY('POLYGON ((119.164319033925 38.3470896280832, 119.160686681975 38.3494788931244, ........))',8307)
    这些东东保存在数组里面,然后插入数据库的时候,只插入数据的名称,以后调用的时候,先获得数组名称,然后再独处数组里面的东西,不久OK了么注意:oracle的字符串varchar2最大只能保存4000个字符,除非使用clob
      

  4.   

    lkz2004你好,我不知道怎么存储到数组里,请给个例子看看好吗?
      

  5.   

    CREATE TYPE sdo_geometry AS OBJECT 
    (
        xxxx,
        xxxx
       xxxxx
    );将'POLYGON ((119.164319033925 38.3470896280832, 119.160686681975 38.3494788931244, ........))',8307 储存在此对象中然后,在插入语句中,将 SDO_GEOMETRY('POLYGON ((119.164319033925 38.3470896280832, 119.160686681975 38.3494788931244, ........))',8307)
    修改为 ‘sdo_geometry’不知道是否可行?