- 浏览: 681250 次
- 性别:
- 来自: 中山
文章分类
最新评论
-
wuhuizhong:
jFinal支持Rest风格吗?可以想spring mvc那样 ...
在JFinal的Controller中接收json数据 -
wuhuizhong:
在jfinal中应如何获取前端ajax提交的Json数据?ht ...
在JFinal的Controller中接收json数据 -
wuhuizhong:
jfinal如何处理json请求的数据:问题: 在某些api接 ...
在JFinal的Controller中接收json数据 -
wuhuizhong:
Ubuntu14.04 安装 Oracle 11g R2 Ex ...
Oracle 11g release 2 XE on Ubuntu 14.04 -
alanljj:
这个很实用,已成功更新,谢过了!
odoo薪酬管理模块l10n_cn_hr_payroll
http://www.hellodba.com/Doc/oracle_xml_db.htm
备注:XML DB是Oracle 9.2中出现的新特性。
1 XML DB安装
通过DBCA安装
2 XML DB数据处理
2.1 存储XML数据到XML表中
2.1.1创建一个有XMLType类型字段的表:
create table xmlcontent (keyvalue varchar2(10) primary key,
xmlvalue xmltype);
2.1.2创建一个XMLType类型表
create table xmltable of xmltype;
2.1.3从XML文件中读取数据存储到XML表中
创建Directory指向存放XML文件的路径:
SQL> grant create any directory to xdb;
Grant succeeded.
SQL> conn xdb/xdb
Connected.
SQL> create directory XMLDIR as 'C:\oracle\XMLDB';
Directory created.
创建存储过程,从XML文件中读取数据存储到XML表中
create or replace function getClobDocument(
filename in varchar2,
charset in varchar2 default NULL)
return CLOB deterministic
is
file bfile := bfilename(‘XMLDIR’,filename);
charContent CLOB := ' ';
targetFile bfile;
lang_ctx number := DBMS_LOB.default_lang_ctx;
charset_id number := 0;
src_offset number := 1 ;
dst_offset number := 1 ;
warning number;
begin
if charset is not null then
charset_id := NLS_CHARSET_ID(charset);
end if;
targetFile := file;
DBMS_LOB.fileopen(targetFile, DBMS_LOB.file_readonly);
DBMS_LOB.LOADCLOBFROMFILE(charContent, targetFile,
DBMS_LOB.getLength(targetFile), src_offset, dst_offset,
charset_id, lang_ctx,warning);
DBMS_LOB.fileclose(targetFile);
return charContent;
end;
/
-- you can use getCLOBDocument() to generate a CLOB from a file containin
-- an XML document. For example, the following statement inserts a row into the
-- XMLType table Example2 created earlier:
向表中插入数据:
SQL> INSERT INTO XMLTABLE
2 VALUES(XMLTYPE(getCLOBDocument('init.xml')));
1 row created.
SQL> INSERT INTO XMLContent
2 VALUES(1, XMLTYPE(getCLOBDocument('init.xml', 'UTF8')));
1 row created.
SQL> commit;
Commit complete.
2.2 更新XML表数据
2.2.1普通Update方式
SQL> UPDATE XMLTABLE X SET VALUE(X)=XMLTYPE(getCLOBDocument('init.xml'));
1 row updated.
SQL> UPDATE XMLContent SET xmlvalue=XMLTYPE(getCLOBDocument('init.xml'))
2 WHERE keyvalue='1';
1 row updated.
SQL> commit;
Commit complete.
2.2.2使用updatexml()更新节点值
SQL> UPDATE xmlcontent
2 SET xmlvalue = updateXML(xmlvalue,
3 '/sqlstress/config/userName/text()',
4 'shanxi')
5 WHERE existsNode(xmlvalue,
6 '/sqlstress/config[userName="shanxi806"]') = 1;
1 row updated.
SQL> commit;
Commit complete.
SQL> select extractvalue(xmlvalue,'/sqlstress/config/userName')
2 from xmlcontent;
EXTRACTVALUE(XMLVALUE,'/SQLSTRESS/CONFIG/USERNAME')
---------------------------------------------------------------------
shanxi
2.2.3使用updatexml()更新一个节点树
SQL> UPDATE xmlcontent
2 SET xmlvalue =
3 updateXML(xmlvalue,
4 '/sqlstress/functions/function[1]/parameters/prameter[2]/valuecope',
5 xmltype('<valueScope rangeType="RANGE" dataType="int">
6 <minValue>
7 13111111111
8 </minValue>
9 <maxValue>
10 13999999999
11 </maxValue>
12 </valueScope>'
13 )
14 )
15 WHERE existsNode(xmlvalue,
16 '/sqlstress/functions/function[1]/parameters/parameter[@pid=2]'
17 ) = 1;
1 row updated.
2.3 从XML表中读取数据
主要利用extract(), extractValue(), and existsNode()等几个函数。”Init.xml”的内容参见附录。
2.3.1existsNode ()
EXISTSNODE函数检查XML中的某一个节点是否存在。如果存在,返回1,否则返回0。
SQL> SELECT existsNode(value(X),'/sqlstress/config/connURL')
2 FROM XMLTABLE X;
EXISTSNODE(VALUE(X),'/SQLSTRESS/CONFIG/CONNURL')
------------------------------------------------
1
SQL> SELECT existsNode(value(X),'/sqlstress/config/connURLFalse')
2 FROM XMLTABLE X;
EXISTSNODE(VALUE(X),'/SQLSTRESS/CONFIG/CONNURLFALSE')
-----------------------------------------------------
0
SQL> SELECT existsNode(xmlvalue,'/sqlstress/config/connURL')
2 FROM XMLContent X
3 WHERE keyvalue = '1';
EXISTSNODE(XMLVALUE,'/SQLSTRESS/CONFIG/CONNURL')
------------------------------------------------
1
SQL> SELECT existsNode(value(X),
2 '/sqlstress/config[userPWD="'||chr(10)||' shanxi806'||chr(10)||' "'||']')
3 FROM XMLTABLE X;
EXISTSNODE(VALUE(X),'/SQLSTRESS/CONFIG[USERPWD="'||CHR(10)||'SHANXI806'||CHR(10)
--------------------------------------------------------------------------------
1
SQL> SELECT count(*)
2 FROM XMLContent x
3 WHERE existsNode(xmlvalue,'/sqlstress/config[userName="shanxi806"]') = 1;
COUNT(*)
----------
1
SQL> SELECT count(*)
2 FROM XMLContent x
3 WHERE existsNode(xmlvalue,'/sqlstress/functions/function[@id=1]') = 1;
COUNT(*)
----------
1
SQL> SELECT count(*)
2 FROM XMLContent x
3 WHERE existsNode(xmlvalue,'/sqlstress/functions/function/parameters/parameter[2][@pid=2]') = 1;
COUNT(*)
----------
1
2.3.2extractValue()
EXTRACTVALUE()是从某个节点中读取值
SQL> select extractValue(xmlvalue, '/sqlstress/config/userPWD')
2 from xmlcontent
3 where keyvalue='1';
EXTRACTVALUE(XMLVALUE,'/SQLSTRESS/CONFIG/USERPWD')
----------------------------------------------------------------
shanxi806
SQL> SELECT extractvalue(xmlvalue, '/sqlstress/functions/function[1]/parameters/parameter[2]/@pid')
2 FROM xmlcontent
3 WHERE keyvalue = '1';
EXTRACTVALUE(XMLVALUE,'/SQLSTRESS/FUNCTIONS/FUNCTION[1]/PARAMETERS/PARAMETER[2]/
--------------------------------------------------------------------------------
2
ExtractValue只能返回一个确切的位置节点的值,如果存在多个相同节点,Oracle就会报错:
SQL> SELECT extractvalue(xmlvalue, '/sqlstress/functions/function[1]/parameters/
parameter')
2 FROM xmlcontent
3 WHERE keyvalue = '1';
FROM xmlcontent
*
ERROR at line 2:
ORA-19025: EXTRACTVALUE returns value of only one node
SQL> SELECT extractvalue(xmlvalue, '/sqlstress/config')
2 FROM xmlcontent
3 WHERE keyvalue = '1';
FROM xmlcontent
*
ERROR at line 2:
ORA-19025: EXTRACTVALUE returns value of only one node
2.3.3Extract()
EXTRACT函数返回一个XML文档的一个节点树,或者某一节点下所有符合条件的节点。
返回一个节点树:
SQL> set line 100
SQL> set lone 20000
SQL> SELECT extract(xmlvalue, '/sqlstress/config')
2 FROM xmlcontent
3 WHERE keyvalue = '1';
EXTRACT(XMLVALUE,'/SQLSTRESS/CONFIG')
-----------------------------------------------------
<config>
<connURL>
jdbc:oracle:thin:@10.71.111.231:1521:P51
</connURL>
<userName>shanxi806</userName>
<userPWD>
shanxi806
</userPWD>
<threadNum>
100
</threadNum>
<execNumPerThread>
1000
</execNumPerThread>
</config>
返回所有符合条件的节点:
SQL> SELECT extract(xmlvalue, '/sqlstress/functions/function[1]/parameters/parameter/paraType')
2 FROM xmlcontent
3 WHERE keyvalue = '1';
EXTRACT(XMLVALUE,'/SQLSTRESS/FUNCTIONS/FUNCTION[1]/PARAMETERS/PARAMETER/PARATYPE')
--------------------------------------------------------------------------------
<paraType>
String
</paraType>
<paraType>
String
</paraType>
<paraType>
int
</paraType>
<paraType>
String
</paraType>
<paraType>
String
</paraType>
<paraType>
float
font-
发表评论
-
用函数unistr将Oracle数据库中的Unicode转换为中文
2016-07-19 11:51 7918例子: DECLARE V_EXT_DES V ... -
ORACLE APPLICATION EXPRESS 5.0 升级
2016-05-12 11:43 580Oracle11GR2 XE 缺省是安装了oracle ap ... -
Oracle ACL(Access Control List)
2016-05-12 11:36 889在oralce 11g中假如你想获取server的ip或者h ... -
了解systemstate dump
2016-04-26 14:09 487当数据库出现严重的性能问题或者hang了的时候,我们非常需要 ... -
通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求
2016-03-18 16:25 5152DECLARE req utl_http. ... -
Shell: extract more from listener.log(分析监听日志)
2016-03-16 14:57 1148统计一天内每小时的session请求数 # fgrep ... -
ORA-01031: insufficient privileges 问题解决笔记
2016-02-01 15:53 1187A) File $Oracle_HOME/network/a ... -
listener.log中报Warning: Subscription For Node Down Event Still Pending问题的解决方法
2016-01-07 16:34 1634一套Oracle 10.2.0.1 for aix的数据库环 ... -
Oracle触发器和MySQL触发器之间的区别
2015-11-19 12:55 670Oracle触发器格式: CREATE [OR RE ... -
查询正在执行的存储过程
2015-11-13 09:27 20501、找正在执行的PROCEDURE的 sid ,serial# ... -
undo表空间损坏的处理过程
2015-10-14 13:49 1219磁碟陣列故障,分區/rman上包括undo和archivel ... -
登录oracle资料库时很久无反应的问题处理一例
2015-10-11 10:56 993原因是系统存在僵死的进程,促使session处于激活状态.首 ... -
TNS-12560问题解决
2015-10-01 19:52 613tnsping远程主机实例出现TNS-12560: TNS ... -
查看undo中sql语句的占用情况
2015-08-06 17:18 1764查看undo中sql语句的占用情况 select * ... -
Install Open System Architect And ODBC Instant Client
2015-05-21 14:03 749How to Install Open System Arc ... -
恢复oracle中用pl sql误删除drop掉的表
2015-04-03 16:12 553查看回收站中表 select object_name,or ... -
在Oracle Linux 6.6上安装Oracle 10gR2
2015-01-15 15:36 2681查看硬體配置 # df -h Filesystem ... -
kill
2015-01-03 11:36 457--根据某一对象查询进程 col owner fo ... -
Oracle 数据库Storage存储迁移笔记
2014-12-27 11:08 9861.确认数据文件、控制文件、临时文件、日志文件 位置 / ... -
異地備份資料庫的開啟步驟
2014-11-19 14:03 487使用EMC設備執行異地備份, 資料庫的複製是開啟的狀態下, ...
相关推荐
Oracle XML DB Developer's Guide 是一份由Oracle公司官方发布的指南,它为开发者提供了在Oracle数据库中加载、存储、生成、操作、管理、访问和查询XML数据的指导和示例。这份文档是Oracle XML DB 10g Release 2版本...
Oracle XML DB是Oracle Database 11g中一个重要的特性,它是Oracle公司提供的一个全面的、高性能的XML存储和处理解决方案。这个特性使得Oracle数据库能够直接处理XML数据,无需将其转换为关系模型,从而极大地提高了...
Oracle XML DB是Oracle数据库的一个可选特性,它允许将XML数据以原生方式存储和管理。Oracle 12c Release 2是甲骨文公司数据库产品的一个版本,而Oracle 12c Release 2 (12.2) XML DB Developer's Guide是该版本中...
### Oracle XML DB 11g 中 XML 数据管理 #### 概述 随着XML成为数据传输的新标准,越来越多的企业采用基于XML的解决方案。然而,复杂的XML格式(如包含多个命名空间、数千个元素和递归定义)给数据管理带来了挑战...
### 在Oracle XML DB中存储XML的关键知识点 #### 1. Oracle XML DB简介 - **Oracle XML DB** 是Oracle Database的一部分,旨在提供一个高效且灵活的方式来管理和查询XML文档。 - Oracle XML DB不仅支持XML文档的...
#### 四、Oracle 9i R2 中的 XMLDB 特性 - **增强的 XMLType**: - 支持 XML Schema,提供更精细的数据类型控制。 - 维护 DOM 忠诚度的对象关系存储方式。 - 专门针对 XML 的内存管理机制,提高可扩展性和性能。...
Oracle XML DB是Oracle数据库系统内置的一系列XML特性和技术,主要目标是解决XML文档与关系型数据库之间的数据交互问题。在Oracle9i Database Release 2中引入的XML DB Repository(XML数据库仓库)是一项核心功能,...
Oracle XML DB 是 Oracle 数据库系统中的一个特性,它在 Oracle 9.2 版本中首次引入,专门用于处理和存储 XML(可扩展标记语言)数据。XML 是一种标准的数据交换格式,常用于在不同系统间传递结构化信息。Oracle XML...
6. **XMLDB API**:Oracle提供了一系列的PL/SQL包,如DBMS_XDB、DBMS_XSL_PROCESSOR等,用于在PL/SQL中操作XML数据,包括读写XML文档、执行XQuery、处理XML Schema等。 7. **Web服务集成**:Oracle XML DB可以作为...
综上所述,Oracle XML DB是Oracle数据库对XML技术的一种高效整合,它扩展了传统关系型数据库的功能,适应了现代数据管理的需求,尤其在处理XML文档时表现出强大的性能和灵活性。对于开发者和IT专业人士来说,掌握...
【Oracle XML DB技术详解】 Oracle XML DB是一种集成在Oracle数据库中的技术,专门用于处理和存储XML数据。XML(可扩展标记语言)作为一种通用的数据交换格式,由于其灵活性和结构化特性,广泛应用于不同系统间的...
《Oracle XML DB与DB2 pure XML在XML文档存储查询性能比较分析》 随着信息技术的快速发展,尤其是医疗领域信息化进程的推进,电子病历已经成为医院信息化的核心组成部分。电子病历不仅包含文字、数字信息,还可能...
Oracle XML DB是Oracle数据库系统内建的一个功能强大的XML处理组件,专为高效地存储、检索和处理XML数据而设计。它充分利用了Oracle数据库的核心优势,实现了XML数据与关系型数据库的无缝集成。XML(可扩展标记语言...
同时,11g还增强了XMLDB的互操作性,支持多种XML标准,如SOAP、WSDL和WS-Security,使其成为Web服务的重要组成部分。 在Oracle 12c及以后的版本中,Oracle XML DB继续发展,增加了对XML数据的并行处理能力,提升了...
【Oracle XML DB与DB2 pure XML在XML电子病历实现技术的比较分析】 XML(eXtensible Markup Language)在医疗行业中被广泛用于构建电子病历系统,因为其能够有效地表示复杂的医疗数据结构。然而,如何在关系型...
【Oracle XML DB】是Oracle数据库的一个重要特性,它专门用于管理和处理XML数据。Oracle XML DB提供了全面的XML存储、查询和处理能力,使得XML数据能够无缝集成到Oracle数据库环境中。Oracle XML DB支持标准的XML...
### 基于Oracle XML DB的可结构化电子病历研究 #### 一、引言与背景 随着信息技术的进步及医疗服务需求的增长,电子病历(Electronic Medical Record, EMR)已成为提升医疗服务质量的关键因素之一。电子病历不仅有...