Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何将巨型几何体插入SDO_几何体类型的字段?_Oracle_Plsql_Oracle Spatial - Fatal编程技术网

Oracle 如何将巨型几何体插入SDO_几何体类型的字段?

Oracle 如何将巨型几何体插入SDO_几何体类型的字段?,oracle,plsql,oracle-spatial,Oracle,Plsql,Oracle Spatial,我正在尝试将此几何体插入SDO_几何体字段,如下所示: declare str clob = http://pastebin.com/cKXnCqx7 begin INSERT INTO TEMP_TEST_GEOMETRY VALUES (SDO_CS.TRANSFORM (SDO_GEOMETRY (str, 4674), 1000205)); end; 正在生成以下错误: 字符串文字的最大大小为32K(PL/SQL)。您正试图分配一个98K+的文本,这就是导致错误的原因(尽管因为它指的是

我正在尝试将此几何体插入SDO_几何体字段,如下所示:

declare
str clob = http://pastebin.com/cKXnCqx7
begin
INSERT INTO TEMP_TEST_GEOMETRY VALUES (SDO_CS.TRANSFORM (SDO_GEOMETRY (str, 4674), 1000205));
end;
正在生成以下错误:


字符串文字的最大大小为32K(PL/SQL)。您正试图分配一个98K+的文本,这就是导致错误的原因(尽管因为它指的是4k,所以它似乎来自一个普通的SQL调用,而不是您显示的PL/SQL块)。它还没有尝试从CLOB创建
sdo\U几何体
对象

理想情况下,您应该从一个文件或其他机制加载值,以提供完整的CLOB。如果你必须把它当作一个文字,你必须手动将它分割成块;如果使其变大,则此值至少为4:

declare
  str clob;
begin
  dbms_lob.createtemporary(str, false);
  dbms_lob.append(str, 'POLYGON ((-47.674240062208945 -2.8066454423517624, -47.674313162 -2.8066509996, <...snip...>');
  dbms_lob.append(str, '47.6753521374 -2.8067875453, -47.6752566506 -2.8067787567, -47.6752552377 -2.8067785117, <...snip...>');
  dbms_lob.append(str, '-47.658134547 -2.8044846153, -47.6581360233 -2.8044849964, -47.6581811229 -2.8044926289, <...snip...>');
  dbms_lob.append(str, '-47.6717079633 -2.8057792966, -47.6717079859 -2.80577931, -47.6717083252 -2.8057795101, -47.6718125136 -2.8058408619, -47.6719547186 -2.8059291721, -47.6719573483 -2.8059307844, -47.6719575243 -2.8059308908, -47.6719601722 -2.8059324729, -47.6720975574 -2.8060134925, -47.6721015308 -2.8060157903, -47.6721017969 -2.8060159412, -47.6721058088 -2.806018171, -47.6721847946 -2.8060611947, -47.6721897923 -2.8060650985, -47.6722059263 -2.8060767675, -47.6722070291 -2.8060775047, -47.6722416572 -2.8060971165, -47.6722428566 -2.8060976832, -47.6722611616 -2.8061055189, -47.6722666301 -2.8061076243, -47.6722849174 -2.806116847, -47.6722862515 -2.8061174528, -47.6723066339 -2.8061257231, -47.6723316499 -2.8061347029, -47.6723426416 -2.8061383836, -47.6723433793 -2.8061386131, -47.672354519 -2.8061418177, -47.6723803034 -2.8061486384, -47.6725084039 -2.8061908942, -47.6725130545 -2.8061923817, -47.6725133654 -2.806192478, -47.6725180423 -2.806193881, -47.6728423039 -2.8062879629, -47.6728698649 -2.8062995965, -47.6728952856 -2.8063088527, -47.672897007 -2.8063093833, -47.672949984 -2.8063200428, -47.6729517767 -2.8063202193, -47.672966443 -2.8063209226, -47.6729679855 -2.8063213223, -47.6733393514 -2.8064196858, -47.6733738728 -2.8064264543, -47.6733761939 -2.8064267537, -47.6733804796 -2.8064270239, -47.6733890639 -2.806431641, -47.6734057692 -2.8064398944, -47.6734069006 -2.8064404055, -47.6734241363 -2.8064474849, -47.6736663052 -2.8065373005, -47.6736676833 -2.8065378073, -47.6736677752 -2.8065378409, -47.673669156 -2.8065383402, -47.6737754465 -2.8065764489, -47.673793217 -2.8065850801, -47.6737945765 -2.8065856723, -47.6738366895 -2.8066000123, -47.6738381279 -2.8066003728, -47.6738811819 -2.8066074503, -47.6739137725 -2.8066153813, -47.6739159177 -2.806615636, -47.6739318345 -2.8066165588, -47.673951326 -2.806622013, -47.6739530661 -2.8066223195, -47.6739793945 -2.8066256302, -47.6740948445 -2.8066344025, -47.674240062208945 -2.8066454423517624))');
  INSERT INTO TEMP_TEST_GEOMETRY
  VALUES (SDO_CS.TRANSFORM (SDO_GEOMETRY (str, 4674), 1000205));
  dbms_lob.freetemporary(str);
end;
/
声明
str-clob;
开始
dbms_lob.createtemporary(str,false);
dbms_lob.append(str,'多边形(-47.674240062208945-2.8066454423517624,--47.674313162-2.8066509996');
dbms_lob.append(str,'47.6753521374-2.8067875453,-47.6752566506-2.8067787567,-47.6752552377-2.8067785117');
dbms_lob.append(str'-47.658134547-2.8044846153,-47.6581360233-2.8044849964,-47.65811229-2.8044926289');
dbms_lob.append例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如,例如:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -2.806018171, -47.6721847946 -2.8060611947, -47.6721897923 -2.8060650985, -47.6722059263 -2.8060767675, -47.6722070291 -2.8060775047, -47.6722416572 -2.8060971165, -47.6722428566 -2.8060976832, -47.6722611616 -2.8061055189, -47.6722666301 -2.8061076243, -47.6722849174 -2.806116847, -47.6722862515 -2.8061174528, -47.6723066339 -2.8061257231, -47.6723316499 -2.8061347029, -47.6723426416 -2.8061383836, -47.6723433793 -2.8061386131, -47.672354519 -2.8061418177, -47.6723803034 -2.8061486384, -47.6725084039 -2.8061908942, -47.6725130545 -2.8061923817, -47.6725133654 -2.806192478, -47.6725180423 -2.806193881, -47.6728423039 -2.8062879629, -47.6728698649 -2.8062995965, -47.6728952856 -2.8063088527, -47.672897007 -2.8063093833, -47.672949984 -2.8063200428, -47.6729517767 -2.8063202193, -47.672966443 -2.8063209226, -47.6729679855 -2.8063213223, -47.6733393514 -2.8064196858, -47.6733738728 -2.8064264543, -47.6733761939 -2.8064267537, -47.6733804796 -2.8064270239, -47.6733890639 -2.806431641, -47.6734057692 -2.8064398944, -47.6734069006 -2.8064404055, -47.6734241363 -2.8064474849, -47.6736663052 -2.8065373005, -47.6736676833 -2.8065378073, -47.6736677752 -2.8065378409, -47.673669156 -2.8065383402, -47.6737754465 -2.8065764489, -47.673793217 -2.8065850801, -47.6737945765 -2.8065856723, -47.6738366895 -2.8066000123, -47.6738381279 -2.8066003728, -47.6738811819 -2.8066074503, -47.6739137725 -2.8066153813, -47.6739159177 -2.806615636, -47.6739318345 -2.8066165588, -47.673951326 -2.806622013, -47.6739530661 -2.8066223195, -47.6739793945 -2.8066256302, -47.6740948445 -2.8066344025, -47.674240062208945 -2.8066454423517624))');
插入温度测试几何图形
值(SDO_CS.TRANSFORM(SDO_几何体(str,4674),1000205));
dbms_lob.freetimorary(str);
结束;
/
您可以将块变小,并有更多的附件,这在某些方面可能更易于管理,但需要进行更多的设置。但是手动操作仍然很痛苦,因此如果无法通过其他方式获得值,这可能是最后的选择



如果字符串来自HTTP调用,您可以分块读取响应,并在读取响应时将其转换为CLOB,方法与使用
dbms\u lob.append
。具体方式取决于您当前获取响应所使用的机制。还值得注意的是,Oracle 12c具有;在早期版本中,您可以使用第三方,.

请以文本而不是图像的形式发布错误。问题不在于调用
sdo_geometry
构造函数;问题在于您如何尝试设置CLOB值。您必须以32k块的形式构建它。(与第一个代码一样,我肯定有更好的示例)但是这个字符串是从哪里来的呢?你能从一个文件中读取它吗?它是一个字符串。我可以看到它是一个字符串。它是一个超过32个字符长的字符串,这意味着你不能将它直接赋给一个变量-字符串文字的最大长度是32k(PL/SQL)。你没有在代码中键入它。你是在复制和p吗从文件中读取?如果是这样,该文件是否可以放在某个地方,您可以使用
utl_file
读取该文件?否则,您必须手动将字符串切分为更小的块,以创建完整的CLOB值。此字符串来自json,我理解您所说的内容