参照: Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串

背景:在写存储过程时,需要获取表单提交的信息。表单信息是以xml格式的字符串存储在colb类型的字段dataxml中,如何获取呢?参考百度内容,写一个function(函数),参数有xml格式字符串(dataxml值)和指定节点(nodeName),返回指定节点的值(nodeValue)。

编码实现:

--get_xml_nodeValue实现 start

CREATE OR REPLACE FUNCTION get_xml_nodeValue(xmlStr CLOB, nodeName VARCHAR2) RETURN VARCHAR2 IS

--创建xml解析器实例xmlparser.Parser

xmlPar xmlparser.Parser := xmlparser.newParser;

--定义DOM文档

xDoc xmldom.DOMDocument;

--定义item子节点数目变量

lenItme INTEGER;

--定义节点列表,存放item节点们

itemNodes xmldom.DOMNodeList;

--定义节点,存放单个item节点

itemNode xmldom.DOMNode;

valueReturn VARCHAR2 (100);

BEGIN

--解析xmlStr中xml字符串,并存放到xmlPar中

xmlparser.parseClob(xmlPar, xmlStr);

--将xmlPar中的数据转存到dom文档中

xDoc := xmlparser.getDocument(xmlPar);

--释放解析器实例

xmlparser.freeParser(xmlPar);

--获取所有item节点

itemNodes := xmldom.getElementsByTagName(xDoc, nodeName);

--获取item节点的个数

lenItme := xmldom.getLength(itemNodes);

--如果无该标签,则返回EMPTY

IF lenItme = 0 THEN

valueReturn := '';

ELSE

--获取节点列表中的第1个item节点

itemNode := xmldom.item (itemNodes, 0);

--获取所有子节点的值

valueReturn := xmldom.getNodeValue(xmldom.getFirstChild (itemNode));

END IF;

--释放dom

xmldom.freeDocument(xDoc);

RETURN valueReturn;

END get_xml_nodeValue;

--get_xml_nodeValue实现 end

调用测试:

表:FORM_DATA;

字段:DATAXML,字段值:“1张三17700000000410527999909099999”;

查询1:select get_xml_nodeValue(f.dataxml, 'name') from form_data f; 结果:张三 ;

查询2:select get_xml_nodeValue(f.dataxml, 'phone') from form_data f; 结果:17700000000 ;

查询3:select get_xml_nodeValue(f.dataxml, 'id_number') from form_data f; 结果:410527999909099999 。

完!

oracle怎么从大字段中取节点,Oracle数据库 获取CLOB字段存储的xml格式字符串指定节点的值...相关推荐

  1. Java中对查出的数据计数_基础算法7:从数据库某个字段中取出现次数最多的几条数据形成“热门xxx”...

    在这里,我们需要查出所有的"出发城市"和"到达城市",并对每个城市进行计数根据其出现次数来取出几个出现次数最多的城市为热门城市 注:将多个字段的数据合并在一起并 ...

  2. 上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(1)

    最近做了个用户维护功能,涉及到照片的操作. 照片是存到数据库oracle中的Blob字段中. 难点有两个: 1,图片的上传:2,Blob字段的读取. 先说图片的上传吧, 我使用common-fileu ...

  3. C# 将XML格式字符串,写入数据集的表中 XML解析

    将XML格式字符串,写入数据集的表1中 命名空间:using System.Xml;             string strRead;//strRead为以下xml值 XmlDocument x ...

  4. mysql 查询相同字段的数据_MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法...

    比如现在有一人员表  (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select   p1.*   from   persons   p1,persons   ...

  5. mysql 查询字段中是否存在空格的_mysql查询字段中带空格的值的sql语句

    (1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 代码如下 update ` ...

  6. 上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)(2)

    首先说写入oracle的Blob字段 上一文章的实现方法没有贴出来,如下: TempUserService.java [html] view plaincopy package org.hd.temp ...

  7. c++gdal如何在大图像中截取小图像并获取其图像信息_CVPR2020 | 真实场景中的玻璃检测,有趣的应用...

    本文是我在浏览CVPR2020文章中发现的一篇有趣的有关玻璃检测的文章,平常很少有人关注玻璃检测有关的任务,可以说是开辟一个新的方向,具有巨大的应用价值,准确识别并分割出场景中的玻璃,不仅能够消除由于 ...

  8. oracle故障一例,工作中遇到的oracle故障分析和处理一例

    工作中遇到的oracle故障分析和处理一例以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 案例类别 VAS网络 系统类型 ...

  9. oracle循环不是a就取b,oracle数据库试题的.doc

    oracle数据库试题的 ORACLE数据库试题 74 姓名: 戴希引 一.选择题(总分50分,每题1分,*为多选)42 1. 下列不属于ORACLE的逻辑结构的是()区段数据文件表空间 2. 下面哪 ...

最新文章

  1. PAT(甲级)2019年春季考试 7-3 Telefraud Detection
  2. Python 列表 sort() 方法
  3. python装饰器原理-Python装饰器的实现原理
  4. 命令 —— awk内置变量(NF,NR,FS,FILENAME)
  5. python分发包_Python 分发包中添加额外文件的方法
  6. 通过WebBrowser使用Echats
  7. 使用phpstorm+wamp实现php代码实时调试审计
  8. 实例探究Python以并发方式编写高性能端口扫描器的方法
  9. PHP Cookbook读书笔记 – 第13章Web自动化
  10. 一款好看的pycharm主题Atom One Dark
  11. 证明连续随机变量形式Jensen不等式
  12. C++ 实现程序暂停
  13. Unreal Engine 4 渲染目标(Render Target)教程 之 实现雪地足迹(下)
  14. 姓名:孔盼 学号:2103101015 桃花岛——盼<>盼
  15. 上位机与1200组态步骤_西门子1200PLC的S7通讯组态编程
  16. 护卫神安装mysql_护卫神·MySQL密码修改工具
  17. LightGBM详细
  18. JIT(just-in-time) 即时编译
  19. java | 什么是动态代理?
  20. 进化计算(十)——MFEA算法详解Ⅰ

热门文章

  1. 0414-复利计算再升级
  2. 数学入门题——《算法竞赛入门经典-训练指南》
  3. 从硬核科幻小说《三体》中看嵌入式
  4. SEO笔记—网页结构优化(四)
  5. skywalking 源码解析——多线程变量传递 EnhancedInstance
  6. SharedPreferences保存对象以及集合,腾讯MMKV使用,保存搜索历史
  7. Mongoose provide access to previous value of property in pre('save')
  8. mongodb $unwind 聚合管道
  9. java基础面试题整理(BAT)
  10. ajax 高并发请求,理解node.js处理高并发请求原理