insert into abc (id,xmldoc) 
values ('123' , 
sys.xmlType.createXML('<name><a id="1" value="some values">abc</a></name>') );正常插入没有问题。 
但是当长度大约4000 就不支持了。因为是字符串类型。需要clob类型。请问该如何实现,用  OCI 也可以,求思路。或者连接,实在找不到了。

解决方案 »

  1. 首先问问 你现在是因为sql语句超长 无法执行 还是字段长度受限制啊
    如果是sql语句超长的话 可以这样
    String xml = sys.xmlType.createXML('<name><a id="1" value="some values">abc</a></name>');
    通过循环,将xml按照2000个字符截取,放到一个数组中
    再循环,对数组中的每个元素拼装一个sql
    第一个sql为 insert into abc (id,xmldoc) values ('123' , xml[0])
    后边的sql为 update abc set xmldoc = xmldoc || xml[1] where id = '123'
    这样就把每个sql控制在2000个字符左右了
    如果是字段的长度限制 那就只能用clob了
      

  2. 是字段,只能用OCI 的 clob了。谢谢回复。我找到资料,在研究。
      

  3. OCI 有大神提供一下思路吗?  1.准备sql
    2
    3.打开 clob
    4. 写 clob
    5. 关闭 clob如何进行绑定变量 把clob列和 宿主变量关联上呢?
      

  4. 我之前用过blob字段 下面是例子 希望对你有帮助
    declare
      strblob blob;
    begin
      select log_detail
        into strblob
        from mw_app.mwt_log
       where obj_id = '4F770FE6DA104FD1A9CE93FA9D3DC88B'
         for update;
      dbms_lob.append(strblob, utl_raw.cast_to_raw(' means hello'));
      update mw_app.mwt_log
         set log_detail = strblob
       where obj_id = '4F770FE6DA104FD1A9CE93FA9D3DC88B';
    end;
      


  5. 感谢! 用OCI 的人好少。
      

类似问题 »