如果读取Oracle数据库xml节点值

如果读取Oracle数据库xml节点值

需求描述

表单信息是以xml格式的字符串存储在clob类型的字段中,如何获取呢?
写一个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

调用测试:

-- 创建测试表
create table t1(
	id intdata clob
);

-- 写入测试数据
insert into t1(id,data)
values(1,'<doc>
	<name>张飞</name>
	<idcard>123456780000</idcard>
</doc>');

commit;

-- 查询数据
select id,data
       ,get_xml_nodeValue(data,'name') as name
       ,get_xml_nodeValue(data,'idcard') as idcard
from t1;

输出结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,我们可以使用第三方库cx_Oracle读取Oracle数据库。首先,需要安装cx_Oracle库,并确保已经设置好了Oracle客户端。接下来,可以按照以下步骤读取Oracle数据库: 1. 首先,导入必要的库: ```python import cx_Oracle ``` 2. 使用cx_Oracle.connect()函数连接到Oracle数据库,需要提供数据库的用户名、密码和连接字符串: ```python connection = cx_Oracle.connect('username', 'password', 'connection_string') ``` 请将'username'替换为您的Oracle数据库用户名,'password'替换为您的密码,'connection_string'替换为正确的连接字符串。 3. 创建一个游标对象,用于执行SQL查询: ```python cursor = connection.cursor() ``` 4. 使用cursor.execute()方法执行您的SQL查询。例如,如果您要查询名为"employees"的表中的所有记录,可以执行以下代码: ```python cursor.execute('SELECT * FROM employees') ``` 5. 使用cursor.fetchall()方法获取查询结果。例如,如果您想将查询结果存储在一个变量中: ```python results = cursor.fetchall() ``` 现在,您可以使用results变量来处理查询结果。 6. 最后,不要忘记关闭游标和数据库连接: ```python cursor.close() connection.close() ``` 这样就完成了从Oracle数据库读取数据的过程。请确保您已经按照上述步骤正确安装和配置了cx_Oracle库,并提供了正确的数据库连接信息。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Python从Oracle数据库中获取数据——fetchall(),fetchone(),fetchmany()函数功能分析](https://blog.csdn.net/qq_28268527/article/details/128629153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [使用Python代码调用命令行来执行MySQL数据库备份和恢复操作](https://download.csdn.net/download/weixin_44609920/88222336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值