• 对oracle里面clob字段里面xml的增删改查学习


     这段时间,我使用系统表里面有clob字段里面存放的xml信息,我们如何对xml进行增删改查操作呢,自己参考了很多也学到很多,给大家分享一下

     首先我们先建测试表

      

    CREATE TABLE EFGP_231.FORMINSTANCE_2019_07_20_test1 
    (	OID CHAR(32) NOT NULL ENABLE, 
        FIELDVALUES CLOB NOT NULL ENABLE
    ) 
    

      

      创建完以后,clob字段放入我们xml数据,具体是什么呢,

      

    <quanxian>
    <Textbox6 id="Textbox6" dataType="java.lang.String" perDataProId=""></Textbox6>
    <Textbox9 id="Textbox9" dataType="java.lang.String" perDataProId="">1205</Textbox9>
    <Textbox10 id="Textbox10" dataType="java.lang.String" perDataProId="">2019/07/18</Textbox10>
    <TextArea14 id="TextArea14" dataType="java.lang.String" perDataProId=""></TextArea14>
    <SerialNumber id="SerialNumber" dataType="java.lang.String">zx-2019074674</SerialNumber>
    <Textbox21 id="Textbox21" dataType="java.lang.String" perDataProId=""></Textbox21>
    <HiddenTextField0 id="HiddenTextField0" dataType="java.lang.String" perDataProId=""/>
    <Checkbox0 id="Checkbox0" dataType="java.lang.String">0</Checkbox0>
    <Checkbox1 id="Checkbox1" dataType="java.lang.String"/>
    <Checkbox2 id="Checkbox2" dataType="java.lang.String"/>
    <Checkbox3 id="Checkbox3" dataType="java.lang.String"/>
    <Checkbox4 id="Checkbox4" dataType="java.lang.String"/>
    <Checkbox5 id="Checkbox5" dataType="java.lang.String"/>
    <Textbox11 id="Textbox11" dataType="java.lang.String" perDataProId=""></Textbox11>
    <HiddenTextField1 id="HiddenTextField1" dataType="java.lang.String" perDataProId=""/>
    <HiddenTextField2 id="HiddenTextField2" dataType="java.lang.String" perDataProId="">1205</HiddenTextField2>
    <RadioButton18 id="RadioButton18" dataType="java.lang.String"/>
    <TextArea19 id="TextArea19" dataType="java.lang.String" perDataProId=""/>
    <Textbox0 id="Textbox0" dataType="java.lang.String" perDataProId="">19060071</Textbox0>
    <Textbox1 id="Textbox1" dataType="java.lang.String" perDataProId=""></Textbox1>
    <Checkbox7 id="Checkbox7" dataType="java.lang.String"/>
    <Checkbox9 id="Checkbox9" dataType="java.lang.String"/>
    <Checkbox8 id="Checkbox8" dataType="java.lang.String"/>
    <TextArea0 id="TextArea0" dataType="java.lang.String" perDataProId=""/>
    <Checkbox6 id="Checkbox6" dataType="java.lang.String"/>
    <HiddenTextField3 id="HiddenTextField3" dataType="java.lang.String" perDataProId=""/>
    <HiddenTextField4 id="HiddenTextField4" dataType="java.lang.String" perDataProId="">R</HiddenTextField4>
    <Checkbox10 id="Checkbox10" dataType="java.lang.String"/>
    <Checkbox11 id="Checkbox11" dataType="java.lang.String"/>
    <Dropdown13 id="Dropdown13" dataType="java.lang.String">SX003</Dropdown13>
    <TextArea15 id="TextArea15" dataType="java.lang.String" perDataProId=""></TextArea15>
    <TextArea25 id="TextArea25" dataType="java.lang.String" perDataProId=""></TextArea25>
    <Checkbox24 id="Checkbox24" dataType="java.lang.String"/>
    <TextArea26 id="TextArea26" dataType="java.lang.String" perDataProId=""/>
    <hd5 id="hd5" dataType="java.lang.String" perDataProId=""/>
    <hd6 id="hd6" dataType="java.lang.String" perDataProId=""/>
    <ps0 id="ps0" dataType="java.lang.String" perDataProId=""></ps0>
    <ps1 id="ps1" dataType="java.lang.String" perDataProId="">SX003</ps1>
    <hd0 id="hd0" dataType="java.lang.String" perDataProId="">false</hd0>
    <SubjectInfo id="SubjectInfo" dataType="java.lang.String" perDataProId=""></SubjectInfo>
    <GroupArrayInfo id="GroupArrayInfo" dataType="java.lang.String" perDataProId=""></GroupArrayInfo>
    <Checkbox12 id="Checkbox12" dataType="java.lang.String"/>
    <Checkbox13 id="Checkbox13" dataType="java.lang.String"/>
    </quanxian>

    接下来是oracle增删改查


    -- 获取不带节点的值,例如:222
    select extractvalue(xmltype(t.fieldvalues),'/quanxian/TextArea15') as result from Forminstance_2019_07_20_test1 t where t.oid = '17297af0e588100488896efdb640ce5e';
    --修改
    UPDATE Forminstance t SET t.fieldvalues =
    updatexml(xmltype(t.fieldvalues),'/quanxian/Textbox6','<Textbox6>魏伟111</Textbox6>').getClobVal()
    WHERE t.oid = '17297af0e588100488896efdb640ce5e'

    --删除
    update Forminstance_2019_07_20 t set t.fieldvalues=deletexml(xmltype(t.fieldvalues),'/quanxian/TextArea15').getClobVal()
    WHERE t.oid = '17297af0e588100488896efdb640ce5e';

    -- 添加xml节点,insertchildxml添加xml节点,参数3默认指定插在该节点后,若该节点不存在,则追加到子节点集合的末尾
    -- 添加xml节点,insertchildxmlbefore,和insertchildxmlafter添加xml节点,
    ---参数3指定插在该节点前或者后,若该节点不存在,则追加到子节点集合的末尾
    update Forminstance_2019_07_20_test1 t set t.fieldvalues=insertchildxml(xmltype(t.fieldvalues),'/quanxian','tel',xmltype('<tel>222</tel>')).getClobVal() where t.oid='17297af0e588100488896efdb640ce5e';
    update Forminstance_2019_07_20_test1 t set t.fieldvalues=insertchildxmlbefore(xmltype(t.fieldvalues),'/quanxian','Textbox6',xmltype('<TextArea15>111</TextArea15>')).getClobVal() WHERE t.oid = '17297af0e588100488896efdb640ce5e';

  • 相关阅读:
    CentOS 7 如何设置默认启动方式为命令行模式
    Virtual Box配置CentOS7网络
    序列化后成对象转map,再添加到dataList
    centos7 ping: www.baidu.com: Name or service not known
    协议1
    idea查看接口方法实现
    centos关闭防火墙
    myeclipse配置svn
    eas固定ip避免多次申请许可
    jvm配置
  • 原文地址:https://www.cnblogs.com/chenzhelove/p/11361027.html
Copyright © 2020-2023  润新知