参照: 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,字段值:“<data><id>1</id><name>张三</name><phone>17700000000</phone><id_number>410527999909099999</id_number></data>”;

  查询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数据库 获取CLOB字段存储的xml格式字符串指定节点的值的更多相关文章

  1. (转载)读取xml中的指定节点的值

            /// <summary>         /// 读取xml中的指定节点的值        /// </summary>         private st ...

  2. 读取xml中的指定节点的值

    /// <summary> /// 读取xml中的指定节点的值 /// </summary> private string ReadXmlNode(string filenam ...

  3. oracle数据库中将clob字段内容利用java提取出至文本文档中

    代码段: 1.执行clob转String public static String ClobToString(Clob sc) throws SQLException, IOException { S ...

  4. C#XML格式字符串取节点数据

    XML格式的字符串: <xml><return_code><![CDATA[{0}]]></return_code><return_msg> ...

  5. 读取XML文件的指定节点的值 并转换为Item

    cmb_State_Send.ItemsSource = null; XmlDocument doc = new XmlDocument(); doc.Load("D:\\模板\\Works ...

  6. oracle数据库对date字段类型存在空值进行排序的处理方法

    oracle数据库对date字段类型存在空值进行排序的处理方法      oracle 数据库,如果表中有一个字段类型为date,且该字段类型存在空值,并且需要排序,     解决方法为使用oracl ...

  7. c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库

    ///c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库 闲话不多说,直接上代码 using System; using System.Collectio ...

  8. Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项)

    Oracle数据库中,在SQL语句中连接字符串的方法是哪个?(选择1项) A.cat B.concat C.join D.+ 解答:B

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

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

随机推荐

  1. Mybaits 源码解析 (四)----- SqlSession的创建过程(看懂框架源码再也不用死记硬背面试题)

    SqlSession是mybatis的核心接口之一,是myabtis接口层的主要组成部分,对外提供了mybatis常用的api.myabtis提供了两个SqlSesion接口的实现,常用的实现类是De ...

  2. SQL 方面基础操作,主要针对数据库方面的操作步骤

    SQL 结构化查询语言  适用于所有的SQL数据库 SQL  要求每条指令后末端 都要有分号(;),分号是标准方法,对服务器相同请求中执行一条以上的sql语句. 最终目的: 实现对数据库数据的  增 ...

  3. 数据后台管理(五)AOP日志

    为了增加数据的安全性,在数据管理的过程中,我们需要将操作者访问时间,操作者的名称,访问的IP,访问资源的URL,执行时长,访问方法记录下来存储到数据库中,并可以通过页面查看. 1.将日志信息存储到数据 ...

  4. 如何理解swift中的delegate

    Delegation翻译为代理或者委托,是一种设计模式.顾名思义,使class或struct能够将某些职责移交给其他类型的实例. 该设计模式通过定义一个封装(包含)delegate的protocol( ...

  5. HTML5+CSS:02用户注册表单

            新的学期已开始接近两个月了,还记得是在国庆节那几天申请的博客账号,可过了一个月都还没开始写博客,(>_<)有点小偷懒了,不过,学习还是不能落下的,今写一个有点实践运用的关于 ...

  6. Python3.8更新特性

    Python 3.8.0稳定版 部分新特性: • PEP 572,赋值+表达式 :=可以将一个表达式或者一个 if (n := len(a)) > 10:#表达式仍然用,赋值也放一起,后面不用多 ...

  7. LeetCode刷题总结-数组篇(中)

    本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...

  8. vsftpd超实用技巧详解

    简介: vsftpd是"very secure FTP daemon"的缩写,是一个完全免费的.开放源代码的ftp服务器软件. 工作原理: vsftpd使用ftp协议,该协议属于应 ...

  9. 转:redis-cli 命令总结

    redis-cli常用命令,原文地址:https://maoxian.de/2015/08/1342.html Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些comm ...

  10. Wininet-Post

    #include "stdafx.h"#include <Windows.h>#include <wininet.h>#include <iostre ...