这段时间,我使用系统表里面有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';

对oracle里面clob字段里面xml的增删改查学习的更多相关文章

  1. VB&XML的增删改查

    简介:XML的增删改查 开发过程中有许多后台操作XML的过程,每次需要操作时都是找很多代码来参考或者百度一下.今天决定补充下XML操作的知识,把XML操作的增删改查都写了一遍,供以后开发参考 查询: ...

  2. Mybatis之基于XML的增删改查

    这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...

  3. Mybatis_2.基于XML的增删改查

    1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...

  4. java实现xml文件增删改查

    java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...

  5. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  6. 使用idea对XML的增删改查

    XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...

  7. [转载]Oracle之xml的增删改查操作

    tip: xmltype函数是将clob字段转成xmltype类型的函数,若字段本身为xmltype类型则不需要引用xmltype()函数 同名标签用数组取值的方式获取,但起始值从1开始 一.查询(Q ...

  8. Oracle之xml的增删改查操作

    工作之余,总结一下xml操作的一些方法和心得! tip: xmltype函数是将clob字段转成xmltype类型的函数,若字段本身为xmltype类型则不需要引用xmltype()函数 同名标签用数 ...

  9. Oracle+mybatis实现对数据的简单增删改查

    第一步:--创建一个表空间:名字叫 mybatis,建在D盘下的date文件夹下: 第二步:创建用户,名字叫  lisi  ,密码为  :123456 第三步:给用户授权: 第四步:我们在    li ...

随机推荐

  1. 前端开发--vue开发部分报错指南

    前期开发过程中 [Vue warn]: Error in render: "TypeError: Cannot read property '0' of undefined". 解 ...

  2. 多道技术 进程 线程 协程 GIL锁 同步异步 高并发的解决方案 生产者消费者模型

    本文基本内容 多道技术 进程 线程 协程 并发 多线程 多进程 线程池 进程池 GIL锁 互斥锁 网络IO 同步 异步等 实现高并发的几种方式 协程:单线程实现并发 一 多道技术 产生背景 所有程序串 ...

  3. vue移动端字体大小设置

    const setRemUnit = () => { const docEl = document.documentElement; // IPhone6下750像素来设计,实际像素375px, ...

  4. oracle的wm_concat函数实现行转列

    有以下数据 deptname phone username isboss 部门A 电话1 员工A 0 部门A 电话1 领导A 1 部门B 电话2 员工B 0 部门B 电话2 员工C 0 部门B 电话2 ...

  5. python学习-练习题9*9乘法表巩固

    9*9乘法表 分析: 1X1为一行 1X2 2X2 为一行 for i in range(1,10): for j in range(1,i+1): print(str(i) + 'X' + str( ...

  6. SQL Server 存储过程 函数 和sql语句 区别

    存储过程与sql语句 存储过程的优点: 1.具有更好的性能   存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,   而一般 SQL 语句每执行一次就编译一次,因此使用存 ...

  7. 【Weiss】【第03章】练习3.2

    [练习3.2] 给你一个链表L和另一个链表P,它们包含以升序排列的整数.操作printlots(L,P)将打印L中那些由P所指定的位置上的元素. 例如,如果p=1,3,4,6,那么,L的第一.第三.第 ...

  8. Linux命令进阶篇-文件查看与查找

    上一篇的博客对于Linux如何在不同目录下跳转和查看目录下内容做出了总结,主要靠cd和ls,很常见也很实用.但是你看到目录下面那么多不同花花绿绿的文件,心里是不是痒痒,是不是想进去一探究竟,有办法! ...

  9. mysql刷题(不定时更新)

    面试阶段大家基本都会问一些mysql的题,具体的高深理论以后再慢慢补充,但是刷题是不可避免的,下面直接上货 创建/删除表和索引系列 创建表 CREATE TABLE if not exists `te ...

  10. docker系列详解<一>之docker安装

    1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker . 通过 uname -r 命令查看你当前的内核版本 $ ...