其实XML字符串就好像是ORACLE中的外部表,因此Oracle对 解析XML字符串一些规则要求非常严格。XML字符串提供的数据就是一张表,所以Oracle必须提供跟 xml数据一致的列头

示例一

SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING

XMLTYPE('<?xml version="1.0" encoding="gb2312" ?>&xml') AS B

COLUMNS USER_DEAL_ID VARCHAR2(50) PATH    '/USER_DEAL_INFO/USER_DEAL_ID',

DEAL_INURE_TIME VARCHAR2(50)    PATH    '/USER_DEAL_INFO/DEAL_INURE_TIME',

DEAL_EXPIRE_TIME VARCHAR2(50)   PATH    '/USER_DEAL_INFO/DEAL_EXPIRE_TIME',

DEAL_CREATE_TIME VARCHAR2(50)   PATH    '/USER_DEAL_INFO/DEAL_CREATE_TIME');

<DEAL_BASIC>

<USER_DEAL_INFO>

<USER_DEAL_ID>1000100001</USER_DEAL_ID>

<DEAL_INURE_TIME>20081130</DEAL_INURE_TIME>

<DEAL_EXPIRE_TIME>30000101</DEAL_EXPIRE_TIME>

<DEAL_CREATE_TIME>20081130</DEAL_CREATE_TIME>

</USER_DEAL_INFO>

</DEAL_BASIC>

xml version="1.0" 指定xml的版本

encoding="gb2312" 指定xml字符串的字符编码 

以上 < >中的内容可以省略

示例二(单行正常显示)

SELECT * FROM XMLTABLE('$B/ROW' PASSING

XMLTYPE('<?xml version="1.0" encoding="gb2312" ?>&xml') AS B

COLUMNS

TP_ID   NUMBER              PATH        '/ROW/TP_ID',

TP_NAME VARCHAR2(50)        PATH        '/ROW/TP_NAME',

TP_PARENTID NUMBER          PATH        '/ROW/TP_PARENTID',

TP_SNAME VARCHAR2(50)       PATH        '/ROW/TP_SNAME');

<ROW>

<TP_ID>112</TP_ID>

<TP_NAME>ORACLE</TP_NAME>

<TP_PARENTID>0</TP_PARENTID>

<TP_SNAME>R</TP_SNAME>

</ROW>

示例三 (单行正常显示,字符不加单引号。数据反写之后 字符自动添加 单引号)

SELECT * FROM XMLTABLE('$B/ROW' PASSING

XMLTYPE('<?xml version="1.0" encoding="gb2312" ?>&xml') AS B

COLUMNS

TP_ID   NUMBER              PATH        '/ROW/TP_ID',

TP_NAME VARCHAR2(50)        PATH        '/ROW/TP_NAME',

TP_PARENTID NUMBER          PATH        '/ROW/TP_PARENTID',

TP_SNAME VARCHAR2(50)       PATH        '/ROW/TP_SNAME');

<ROW>

<TP_ID>112</TP_ID>

<TP_NAME>计算机网络技术</TP_NAME>

<TP_PARENTID>0</TP_PARENTID>

<TP_SNAME>R</TP_SNAME>

</ROW>

--反写语句如下:

insert into XMLTABLE (TP_ID, TP_NAME, TP_PARENTID, TP_SNAME) values (112, '计算机网络技术', 0, 'R');

示例四 (xml文件中字符不能添加单引号  ’ 和 双引号 ")-

SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING

XMLTYPE(' &XML') AS B

COLUMNS USER_DEAL_ID NUMBER         PATH    '/USER_DEAL_INFO/ROW_ID',

DEAL_INURE_TIME VARCHAR2(50)        PATH    '/USER_DEAL_INFO/ROW_TIME',

DEAL_EXPIRE_TIME VARCHAR2(50)       PATH    '/USER_DEAL_INFO/ROW_NAME');

<DEAL_BASIC>

<USER_DEAL_INFO>

<ROW_ID>1000100001</ROW_ID>

<ROW_TIME>ORACLE</ROW_TIME>

<ROW_NAME>30000101</ROW_NAME>

</USER_DEAL_INFO>

<USER_DEAL_INFO>

<ROW_ID>1000100001</ROW_ID>

<ROW_TIME>"ORACLE"</ROW_TIME>

<ROW_NAME>30000101</ROW_NAME>

</USER_DEAL_INFO>

</DEAL_BASIC>

--反写语句如下:  insert into XMLTABLE (USER_DEAL_ID, DEAL_INURE_TIME, DEAL_EXPIRE_TIME)  values ('1000100001', '"ORACLE"', '30000101');

示例四(多行正常显示)

SELECT * FROM XMLTABLE('$B/ORDERLIST/ORDER' PASSING

XMLTYPE(' &XML') AS B

COLUMNS ORDERID    NUMBER     PATH    '/ORDER/ORDERID',

ORDERNUMBER        NUMBER     PATH    '/ORDER/ORDERNUMBER',

ORDERPRICEE        NUMBER     PATH    '/ORDER/ORDERPRICE');

<ORDERLIST>

<ORDER>

<ORDERID>1</ORDERID>

<ORDERNUMBER>857544544</ORDERNUMBER>

<ORDERPRICE>54</ORDERPRICE>

</ORDER>

<ORDER>

<ORDERID>2</ORDERID>

<ORDERNUMBER>858544544</ORDERNUMBER>

<ORDERPRICE>63</ORDERPRICE>

</ORDER>

<ORDER>

<ORDERID>3</ORDERID>

<ORDERNUMBER>454854555</ORDERNUMBER>

<ORDERPRICE>781</ORDERPRICE>

</ORDER>

</ORDERLIST>

oracle解析xml完成版第二次修改的更多相关文章

  1. oracle解析xml完成版

    SELECT * FROM XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING XMLTYPE('<?xml version="1.0&qu ...

  2. Oracle解析 xml 记录一下(未完待续)

    Oracle解析 xml 记录一下. SQL> desc xmlparser; PROCEDURE FREEPARSER Argument Name                  Type  ...

  3. ORACLE 解析xml字符串-转载的

    --------------------------方法一------------------------------------- 1.xml字符串 /* <orderlist>     ...

  4. oracle解析xml(增加对9i版本的支持)

    --方法1  SELECT * FROM  XMLTABLE('$B/DEAL_BASIC/USER_DEAL_INFO' PASSING     XMLTYPE('<?xml version= ...

  5. 解析XML文件时做得修改

    在.h文件中找到需要在Build Settings中设置的东西,查找Header Search Paths,然后添加/usr/include/libxml2

  6. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  7. HL7 2.6解析转XML(C#版)

    HL7 2.6解析转XML(C#版) 项目中需要解析HL7,所以在网上找到解析代码,但错误很多,所以我修改了一下,测试好用. using System; using System.Collection ...

  8. SQLServer解析xml到Oracle

    写了一个程序:根据状态位读取SQLserver 中的一张表,下载其中一个字段的值,这个值是XML类型的,然后把这个XML文件的内容插入到另一Oracle数据库,并更新SQLServer表的标志位,表示 ...

  9. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

随机推荐

  1. SSH2中实例化不了Action的一个原因

    <!-- 流程管理 --> <action name="flow_*" class="workFlowAction" method=" ...

  2. Android Wear开发 - 数据通讯 - 第二节 : 数据的发送与接收

    本节由介绍3种数据的发送接收:1.Data Items : 比特类型数据,限制100KB以内2.Assets : 资源类型数据,大小无上限3.Message : 发送消息,触发指令 http://de ...

  3. android 随手记 自定义广播通知栏

    自定义通知栏图标?不是很简单么.自定义布局都不在话下! 是的,有xml布局文件当然一切都很简单,如果不给你布局文件用呢? 听我慢慢道来! 首先怎么创建一个通知呢? 1.new 一个 Notificat ...

  4. Profile GPU rendering

    自Android 4.1引入了“Profile GPU rendering”这个开发工具以帮助分析应用程序性能并并精确定位渲染问题,Android 4.3增加了可视效果:On screen as ba ...

  5. Matlab计算机视觉/图像处理工具箱推荐

    Matlab计算机视觉/图像处理工具箱推荐 转载http://cvnote.info/matlab-cv-ip-toolbox/ 计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理 ...

  6. FZYZ-2071 A Simple Math Problem IX

    P2071 -- A Simple Math Problem IX 时间限制:1000MS      内存限制:262144KB 状态:Accepted      标签:    数学问题-博弈论    ...

  7. SRM 406(1-250pt, 1-500pt)

    DIV1 250pt 题意:有几家宠物店,vecort<int>A表示每家宠物店含有小狗占小狗总数的百分比.现在要做扇形统计图统计每家店的小狗百分比,如下图,问作出来的扇形统计图中最多含有 ...

  8. SRM 506(2-1000pt)

    DIV2 1000pt 题意:一个由n*m的网格组成的棋盘,有四种点,'.'表示空点,'#'表示是墙不能走,'$'表示起点(同样是空点),'1'~'9'表示该点有复活时间为t的怪兽.每次,可以从一个点 ...

  9. PHP 生命周期,Opcode 缓存。

    1.php 执行的生命周期. 用户发出请求---->.php--->词典扫描--->解析--->创建Opcode--->处理opcode--->响应 这就是php的 ...

  10. php动态分页类

    <?php /** * 页面名称:cls_page.php */ class Page { private $each_disNums; //每页显示的条目数 private $nums; // ...