Oracle9i之xmltype应用

2023-10-27

Oracle9i之xmltype应用(1)
2007年07月12日 星期四 14:52

这几天在研究9I下的XMLTYPE数据类型,这在解析和查找生成XML方面都很方便,在网上搜到了一篇入门级的文章,转贴下来^_^(有几个地方小改了一下。)

[文章摘要]介绍了oracle9i的xmltype数据类型的基本使用
包括:建立含有xmltype数据类型的表
插入(insert)数据
查询(select)数据
更新(update)数据
添加超过4k字节的xml文档到xmltype型字段
适合初学者。


关键词: oracle9i xmltype


oracle从9i开始支持一种新的数据类型---- xmltype,用于存储和管理xml数据,并提供了很多的functions,用来直接读取xml文档和管理节点。下面将介绍xmltype的一些基本使用。

1.建立含有xmltype数据类型的表
create table abc (id number,xmldoc sys.xmltype);
声明xmltype型字段用:sys.xmltype

2.向带有xmltype类型的表插入带有数据
insert into abc (id,xmldoc) value (abc.nextval , sys.xmlType.createXML('<name><a id="1" value="some values">abc</a></name>') );
插入用 sys.xmlType.createXML('some xml doc')

3.直接查询xmltype字段里面的内容
得到id=1的value变脸的值
select i.xmldoc.extract('//name/a[@id=1]/@value').getStringVal() as ennames, id from abc i


得到a节点的值
select id, i.xmldoc.extract('//name/a/text()').getStringVal() as truename from abc i

得到节点id属性的值

Select hd.Data_t.extract('/root/name/@id').getStringVal()    As Name FROM sehr_house_data hd

4.更新xmltype里面的数据
update abc set xmldoc=updateXML(xmldoc,'//name/a[@id=1]/@value','some new value') where ......
(注意:如果里面没有<a id="1">这个节点,将不能update)

5.添加超过4k字节的xml文档到xmltype型字段
可以通过使用临时表的办法实现:
先建立一个临时的表,其中的一个字段是clob类型;
再将要写入xmltype字段的xml doc写入这个临时的clob型的字段中;
最后insert into abc (id,xmldoc) values (abc_q.nextval , sys.xmlType.createXML((select content from 临时表 where id=......)));

Oracle9i之xmltype应用(2)
2007年07月12日 星期四 15:25

Oracle 9i提供的XML内置特性:

Oracle 9i支持XMLType类型,它是一种Oracle 9i系统定义的对象类型。XMLType有内置的函数,有力的提供了推XML的创建,索检,索引等功能。

用户可以使用SQL函数动态的产生XML文档。这些函数有:SYS_XMLGEN和SYS_XMLAGG和PL/SQL包DBMS_XMLGEN。

XML特性

描述

XMLType

1、XMLType是oracle系统定义的数据类型,系统预定义了内部函数去访问XML数据。可以执行下面的任务:

2、创建XMLType列,在XMLType列上面使用内置的函数。

创建PL/SQL函数和存储过程,可以使用XMLType作为参数传入,或者作为返回参数传出。

3、在XMLType列上面存储、索引、处理XML数据。

 

DBMS_XMLGEN

DBMS_XMLGEN是一个PL/SQL包,提转换一个sql查询的结果到标准的xml格式,返回的是一个XMLTye类型或者是CLOB,DBMS_GEN是用c语言实现,放置在数据库的内核中。DBMS_XMLGEN包和DBMS_XMLQuery包的功能相相似。

SYS_XMLGEN

XMLGEN是一个SQL函数,它用来在sql查询中产生XML,DBMS_XMLGEN和其他包操作在查询水平,

SYS_XMLGEN把一个值,对象类型,XMLType实例转换成一个XML文档。SYS_XMLGEN返回的类型是XMLType。

 

SYS_XMLAGG

SYS_XMLAGG 是一个聚合函数,它聚合在XMLType类型上面。

SYS_XMLAGG聚合所有的输入的XML文档合片断并且通过连接XML片断合增加上一层的标签产生单个XML文档

 

UriTypes

UriType 类型家族能够在数据库中存储和查询Ur-refs,SYS.UriType是一抽象的数据类型,它提供功能去访问URL指向的数据。SYS.HttpUriType和SYS.DBUriType是UriType的子类型。SYS.HttpUriType存储的是HTTP URLs,DBUriType存储的是intra-database 参考。你可以定义自己的SYS.UriType的子类型。

 

如何使用XMLType

创建XMLType列:

CREATE TABLE warehouses(

warehouse_id NUMBER(3),

warehouse_spec SYS.XMLTYPE,

warehouse_name VARCHAR2(35),

location_id NUMBER(4));

插入XMLType列数据

INSERT into warehouses (warehouse_id, warehouse_spec) VALUES (1001, sys.XMLType.createXML(

’<Warehouse whNo="100">

<Building>Owned</Building>

</Warehouse>’));

createXML的输入参数可以是任何的返回为varchar2的表达式或者式CLOB。CreateXML能够检测XML是否的符合合适的,但是它不能检查XML的有效性。

使用在XMLType列上sql查询

SELECT

w.warehouse_spec.extract('/Warehouse/Building/text()').getStringVal()

"Building"

FROM warehouses w

warehouse_spec是一个XMLType列,Extract()是操作在上面的函数

查询结果如下:

Building

-----------------

Owned

更新XMLType的列

UPDATE warehouses SET warehouse_spec =

sys.XMLType.createXML(

’<Warehouse whono="200">

<Building>Leased</Building>

</Warehouse>’));

删去XMLType的列

DELETE FROM warehouses e

WHERE e.warehouse_spec.extract(’//Building/text()’).getStringVal()

= ’Leased’;

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle9i之xmltype应用 的相关文章

随机推荐

  • 惠普服务器之开启虚拟化功能吗,VT虚拟化是什么?惠普主板怎么开启VT虚拟化?...

    如果想要对惠普品牌主板开启vt虚拟化技术的话 可以先确认自己的电脑是不是支持vt虚拟化功能 如果可以那么在电脑开机的时候可以使用快捷方式进入BIOS设置 详细内容请见下文 什么是VT虚拟化 Intel Virtualization Tech
  • 关于开源的XML Parser expat的介绍和使用心得

    转自 http blog csdn net exclusivepig article details 4566252 expat是使用C所写的XML解释器 采用流的方式来解析XML文件 并且基于事件通知型来调用分析到的数据 并不需要把所有X
  • 薄膜电阻和厚膜电阻有什么区别?

    简介 厚膜电阻主要是指采用厚膜工艺印刷而成的电阻 薄膜电阻稳定性的老化过程因实现不同电阻值所需的薄膜厚度而不同 因此在整个电阻范围内是可变的 此外 改变最佳薄膜厚度还会严重影响 TCR TCR是一个不容忽视的微小参数 它的单位是ppm 1
  • C语言结构体大小计算(超详细,例子丰富,有图)

    看了网上很多关于结构体大小计算的方法 感觉很多讲的不是很清楚 换一种例子就行不通了 我自己也是查阅了很多资料 并且进行了大量的例子验证 总结了一个很好计算结构体大小的方法 直接无脑以下三步即可 1 找到结构体中最大的成员变量所占的字节数 2
  • Java方法的调用(值传递和引用传递)

    系列文章目录 文章目录 系列文章目录 Java方法的调用 一 静态方法 二 非静态方法 三 实际参数和形式参数 四 值传递和引用传递 1 值传递 2 引用传递 Java方法的调用 一 静态方法 静态方法调用 类名 方法名 二 非静态方法 1
  • 计算机网络——传输层

    这篇文章是计算机网络系列文章的第四篇 计算机网络 物理层 计算机网络 数据链路层 计算机网络 网络层 计算机网络 传输层 计算机网络 应用层 序言 计算机网络中的传输层在当今的社会起到了什么作用 计算机网络中的传输层在通信和数据传输方面起着
  • 用户协议html代码,微信小程序同意用户协议确认投稿页面设计制作开发教程

    bookInfo title 作 者 bookInfo author 感谢上传的图书和题目 参与我们的书城建设 加入图书分类小组 搜索QQ群123456 加入出题小组 搜索QQ群123456 同意遵守树芽读书的 用户协议 修订版 用户协议
  • ST-LINK 调试、连线

    硬件连线 只需要三根线 swclk swdio gnd 调试 1 debug st link setting 2 pork sw 确定 3 utilities st link settings reset and run打钩 Add对应的芯
  • vue之自定义一Tree组件编写

    1 实现注意事项 递归组件是可以在它们 己模板中调 自身的组件 Node vue
  • 《数字集成电路静态时序分析基础》笔记⑤

    欢迎关注个人公众号摸鱼范式 目录 标准单元库 时序库概述 非线性延迟模型 延迟模型 非线性模型 Derating参数 时序模型 组合逻辑 时序单元 线延迟 参考书目 网络课程 数字集成电路静态时序分析基础 的笔记 地址 https www
  • PyCharm安装教程

    目录 一 下载 1 官网 2 下载 二 安装 1 下载完成后 直接点击安装包安装 即可 2 开始安装 然后下一步 3 可以在此处自定义地址 然后下一步 4 选择安装选择 然后下一步 5 点击安装 等待片刻 安装完成 三 配置PyCharm
  • 陶哲轩发新论文了,又是AI帮忙的那种

    丰色 发自 凹非寺量子位 公众号 QbitAI 不到一个月的时间 陶哲轩又一篇论文上线 这次是关于欧拉函数的单调非递减序列 他通过初等论证证明了一个名为M x 函数的渐近式 即随着x增大 M x 的行为趋势 该函数在他之前的一篇博客中有所提
  • 【嵌入式开发基础】git 之 format-patch的使用

    背景介绍 我们在日常的开发中 涉及对第三方源码的修改或在需要将自己的改动给到其他同事时 经常需要将改动打patch后进行处理 这时候我们常直接使用diff命令生成patch文件 然后通过patch进行打对应的patch文件 详细的使用请看这
  • 液晶屏接口 - MIPI

    MIPI 移动行业处理器接口 是Mobile Industry Processor Interface的缩写 MIPI并不是一个单一的接口或协议 而是包含了一套协议和标准 以满足各种子系统 图像子系统 摄像头和显示器 存储子系统 无线子系统
  • 【pytorch函数笔记(二)】torch.nn.Sigmoid()

    import torch nn as nn torch nn Sigmoid 一 sigmoid介绍 sigmoid是激活函数的一种 它会将样本值映射到0到1之间 sigmoid的公式如下 1 1 e
  • VC++ GDI+将CDC保存为图片文件(bmp、jpg、png)

    int GetEncoderClsid const wchar t format CLSID pClsid UINT num 0 UINT size 0 ImageCodecInfo pImageCodecInfo NULL GetImag
  • 运算放大器相关

    1 电压电流采样 放大倍数 电压采样电路 放大增益 Vi 48 1 48 1V 虚短 V V 两个输入端视为同等电位 虚断 反向输入端无电流输入输出 流入输入端电流不足1uA 输入端可以视为等效开路 通过R3和R4的电流相等 欧姆定律 I
  • 手机云游戏App

    注 在安卓手机端使用 其他端不做分析 App 手机游戏 PC和主机游戏 免费时长 手机游戏 是否排队 备注 咪咕快游 支持 数量一般 和腾讯还有合作 有不少腾讯的游戏 支持 每日登录签到送30 60分钟 当天失效 0点更新 每套登录签到和任
  • PMIC

    Aurix TLF35584 多电压安全微处理器电源 提供电源给MCU 第二供电系统 车载自诊断系统供电 用于MCU CAN总线独立供电 输出复位信号给MCU 包含看门狗 由MCU喂狗 如不能则复位MCU 中断 与MCU相接 当电源有异常时
  • Oracle9i之xmltype应用

    Oracle9i之xmltype应用 1 2007年07月12日 星期四 14 52 这几天在研究9I下的XMLTYPE数据类型 这在解析和查找生成XML方面都很方便 在网上搜到了一篇入门级的文章 转贴下来 有几个地方小改了一下 文章摘要