在 Oracle XML DB 中使用 XQuery

目的

本教程描述了如何在 Oracle XML DB 中使用 XQuery。

所需时间

大约 1 小时。

主题

本教程包括下列主题:

查看屏幕截图

单击此图标可以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)

注意:您还可以在下面的步骤中将光标放在每个单独的图标上,仅加载和查看与该步骤相关的屏幕截图。

概述

什么是 XQuery?

XML Query (XQuery) 是由 World Wide Web 联合会致力推出的标准,它使您能够从 XML 文档提取数据。XML Query 是专门为使用 XML 数据模型而设计的,并且成为以 XML 语言表达的数据的综合性查询语言,正如 SQL 曾经是世界上很多以关系表表达的结构化数据查询语言,以及像关键字搜索曾经增强 Internet 中的大量信息访问功能一样。

Oracle 数据库自带的 XQuery

由于 XQuery 基本完成,IT 社区已经开始调查 XML 的业务使用,并确定 XQuery 所能提供的价值。作为商业数据库技术的创新领导者,Oracle 数据库 10g 第 2 版提供了完善的自带 XQuery 引擎,该引擎与传统的 Oracle 数据库服务器进行集成,以帮助各种组织探索其 XQuery 需求。

在 SQL 方面,SQL 2003 引入了 XML 数据类型,以作为在 SQL 中封装 XML 的方法。SQL 委员会正致力于通过 XQuery 集成 XML 查询。通过引入新的 SQL 函数,即将完成这项工作:XMLQuery 和新的结构:XMLTable 这两者均使用 XQuery 操作 XML 和 SQL 值。由于前者允许使用 XQuery 查询和构建 XML,因此前者称为以 XQuery 为中心的方法。由于后者允许将 XQuery 值细分为关系值,因此后者称为以 SQL 为中心的方法。

Oracle 数据库 10g 第 2 版通过这些 SQL 标准函数在数据库服务器中实现了 XQuery 支持。还在 SQL*Plus 中实现了新的 XQUERY 命令,以允许用户在命令行中输入 XQuery 表达式。通过 Oracle 数据库 10g 第 2 版中 XQuery 基于标准的实现,应用程序开发人员可以使用喜好的 API (例如 JDBC、ODP.NET)来利用 Oracle 数据库 XQuery 功能。

Oracle XQuery 的好处

通过 SQL/XML XQuery 函数和 XML 文档的结构化存储,XML DB 可以使用超过基于 DOM 的 XML 查询功能评估几个数量级的性能来处理 XML 查询。此外,XML 查询可以无缝地与 SQL 关系查询进行合并,来处理所有查询情况。最后,Oracle XML DB 的 XML 查询功能建立在业界最好的关系型数据库基础之上,具有高度的可靠性、可用性、可伸缩性和安全性。简言之,Oracle 数据库 10g 第 2 版中的 XML DB 查询功能为通用、可伸缩、并发以及高性能的 XML 应用程序提供了最全面、最高效的功能。

在企业管理器中查看 XML 模式

在 Oracle 数据库 10g 随附的示例架构中,已经提供了一个 XML 模式(作为 OE 模式的一部分)。在本部分中,您将使用企业管理器查看其内容。执行以下步骤:

1.

打开浏览器,输入以下 URL:

http://raclinux1.us.oracle.com:1158/em/

输入 system/oracle,然后单击 Login。

2.

单击 Administration 选项卡。

3.

向下滚动。

4.

选择 XML Database 下的 Configuration 链接。

5.

输入 2100 作为 FTP 端口,输入 8080 作为 HTTP 端口。然后单击 OK。

6.

现在已经完成了配置设置。单击 Cluster Database 路径式导航栏。

7.

在 XML Database 下的 Administration 选项卡中,选择 Resources 链接。

8.

单击 Go 查看所有资源。

9.

这将显示所有资源。展开 home。

10.

展开 OE - PurchaseOrders - 2002 - Apr 以显示 XML 文档列表。单击列表中的第一个 XML 文档。

11.

这将显示该文档的一般信息。要查看该文档的实际内容,单击 Display Contents。

12.

这将显示文件内容。单击 Show formatted XML Content。

13.

查看格式化的 XML 文档。完成后,将关闭窗口。

14.

单击 Database 路径式导航栏。

15.

在 XML Database 下的 Administration 选项卡中,单击 XMLType Tables。

16.

单击 Go。

17.

单击表名 PURCHASEORDER。

18.

这将显示 XSD 的定义。向下滚动查看详细信息。

在 JDeveloper 中查看 XML 模式

要在 JDeveloper 中查看 XML 模式,您需要执行以下任务:

创建 WebDAV 连接

在访问 XML DB 中的 XML 模式文档之前,您需要创建 WebDAV 连接。执行以下步骤:

1.

双击桌面上的 JDeveloper 10.1.2 图标。

2.

单击 Connection 选项卡。在 Navigator 窗口中右键单击 WebDAV Connection,然后选择 New WebDAV Connection...

3.

在 Welcome 窗口中,单击 Next。

4.

在 Name 域中输入 WebDAVConnection1,在 URL 域中输入 http://raclinux1.us.oracle.com:8080/,然后单击 Authentication Required。然后单击 Next。

5.

输入 OE 作为用户名和密码。然后单击 Next。

6.

单击 Test Connection。

7.

测试成功。单击 Next。

8.

单击 Finish。

9.

展开刚才创建的 WebDAVConnection1 连接。

查看 XML 模式

现在,您可以查看 XML 模式。执行以下步骤:

1.

展开home - OE - PurchaseOrders - 2002 - Apr。右键单击列表中的第一个文档,然后选择 Open。这将显示 XML 文档。

2.

在 Navigator 窗口中向下滚动,然后右键单击 purchaseOrder.xsd。然后选择 Open。

3.

这将在图形布局中显示 XML 模式。展开 PurchaseOrder 类型。

4.

展开 Actions 类型。

5.

展开 Action,您将看到两个类型对象:User 和 Date。现在,您将返回 XML 文档以查看它们的定义位置。单击XML Document选项卡。

6.

Action 对象包含一个 KPARTNER 用户类型。

运行 XQuery 表达式以访问 XML 文档

在本部分中,您将运行一些 XQuery 表达式及其关联的解释计划来访问有关 XML 文档的信息。执行以下步骤:

1.

打开一个终端窗口,然后输入以下命令:

cd wkdir

sqlplus oe/oe

2.

您将运行的第一个 xquery 将选择所有 XML 文档。执行以下脚本:

@XQuery01

3.

您将运行的第二个 xquery 将选择特定用户的 XML 文档。执行以下脚本:

@XQuery02

4.

您将运行的下一个 xquery 将查看特定的订货单。执行以下脚本:

@XQuery03

5.

您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:

@XQuery04

6.

您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:

@XQuery05

7.

您将运行的下一个 xquery 将列出特定订货单中每行项目的描述。执行以下脚本:

@XQuery06

通过创建索引增强 XQuery 表达式的性能

您可以通过创建索引来增强 XQuery 的性能。在本部分中,您将创建一个索引,然后运行相同的 XQueries 来查看改变性能的解释计划如何获得增强。执行以下步骤:

1.

从 SQLPlus 会话中,登录 OE 用户。

@createXMLIndexes

2.

您将运行的下一个 xquery 将查看特定的订货单。执行以下脚本:

@XQuery03

3.

您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:

@XQuery04

4.

您将运行的下一个 xquery 将列出包含特定部件 ID 的所有订货单。执行以下脚本:

@XQuery05

5.

您将运行的下一个 xquery 将列出特定订货单中每行项目的描述。执行以下脚本:

@XQuery06

通过 XQuery 使用视图

您可以使用 XQuery 通过视图从 SQL 数据生成 XMl。执行以下步骤:

1.

首先通过 XMLTable() SQL/XML 函数和 XQuery 表达式来根据关系表创建 XML 视图。执行以下脚本:

@createXQueryView

2.

现在,可以根据刚刚创建的 XML 视图来显示 XQuery。执行以下脚本:

@xqueryXQLView

使用虚拟 XML 文档

虚拟 XML 文档可指导您如何将 XMLType 视图中行的内容作为 Oracle XML DB 信息库中的文档来提供。执行下列任务:

创建触发器

1.

首先需要创建一个要从前面创建的 XML 视图创建一个虚拟 XML 文档的触发器。执行以下脚本:

@folderXQDepartments

在 JDeveloper 中查看虚拟 XML 文档

1.

切换到 JDeveloper。从 Navigator 窗口中,右键单击 WebDAV 连接中的/home/OE,然后选择 Refresh。

2.

展开 XQDepartments。

注意:如果在此步骤中遇到一个错误,则试着再次执行第 1 步,然后再次展开 XQDepartments。

3.

选择列表中的第一个 .xml 文档。该 Accounting.xml 文档直接在 XMLType 视图的行中显示 XML 数据。

在 SQL*Plus 中查看虚拟 XML 文档

1.

您还可以查询虚拟 XML 文档。请注意如何使用 XQuery 标准 doc() 函数来检索 XML DB 信息库中的 XML 文档。首先,您将查看具有 Accounting 显示名的虚拟文档列表。执行以下脚本:

@departmentsXQueries01

2.

现在,可以显示其中一个虚拟 XML 文档的内容。执行以下脚本:

@departmentsXQueries02

3.

最后,您可以执行 XQuery 来选择虚拟 XML 文档的其中一项。执行以下脚本:

@departmentsXQueries03

在资源视图中使用 XQuery 从 XML 信息库检索信息

通过 RESOURCE_VIEW和 PATH_VIEW 公开 XML DB 信息库的内容。 Public synonyms make these views available to all database users.可以像使用任何其他数据库视图那样来使用这些视图。执行以下步骤:

1.

执行以下脚本:

@resourceViewXQuery01

使用 XQuery 转换 XML 文档

XQuery 是通用的查询语言。它可用于将 XML 文档从一种结构转换为另一种结构。执行以下步骤:

1.

标记和其他 XQuery 表达式已经对订货单进行转换,以生成明显不同的 XML 文档报告。执行以下脚本:

@XQueryTransform

使用 JDBC 通过 XQuery 查询 Oracle XML DB

JDBC 通过以下 SQL/XML 函数的本地实现来支持 XQuery 语言:XMLQuery 和 XMLTable。以下示例演示了如何使用 XMLTable() 函数的 PASSING 语句将动态变量绑定到 XQuery 表达式。执行下列任务:

添加应用程序

1.

切换到 JDeveloper。单击 Navigator 的 Applications 选项卡,然后单击 Add to Applications 图标。

2.

从 /JDBC 目录中选择 XQuerySamples.jws。然后单击 Open。

更改 JDBC 连接信息

1.

展开 XQuerySamples > SimpleXQuery > Application Sources,然后右键单击 SimpleXQuery.java,并单击 Open。

2.

稍微向下滚动到 OracleConnection 语句,然后更改主机名和 SID 信息。

3.

更改 XQueryBind 下所有 .java 文件的 JDBC 连接信息。

添加类路径

1.

您需要设置类路径。选择 Tools > Default Project Properties。

2.

选择 Libraries,然后单击 New...。

3.

输入 Oracle Database 10gR2 作为库名称,然后为类路径单击 Edit。

4.

单击 Add Entry...。

5.

导航到 $ORACLE_HOME/jdbc/lib/ojdbc14.jar 文件,然后单击 Select。

6.

单击 Add Entry...。

7.

导航到 $ORACLE_HOME/rdbms/jlib/xdb.jar 文件,然后单击 Select。

8.

单击 Add Entry...。

9.

导航到 $ORACLE_HOME/lib/xmlparserv2.jar 文件,然后单击 Select。

10.

单击 OK。

11.

单击 OK 保存新的库。

12.

单击 OK 关闭 Project Properties 窗口。

13.

现在,您需要将该库添加到项目中。右键单击 SimpleXQuery,然后选择 Project Properties。

14.

从库列表中选择 Oracle Database 10gR2,然后单击 > 进行选择。然后单击 OK。

15.

右键单击 XQueryBind,然后选择 Project Properties。

16.

从库列表中选择 Oracle Database 10gR2,然后单击 > 进行选择。然后单击 OK。

构建应用程序

1.

右键单击 XQuerySamples,然后选择 Make。

2.

查看 Message 窗口,确保未收到错误消息。

运行应用程序

1.

右键单击 SimpleXQuery,然后选择 Run。

2.

输出将显示在 Log 区域。

3.

右键单击 XQueryBind,然后选择 Run。

4.

输出将显示在 Log 区域。

总结

在本课程中,您学习了如何:

使用 XQuery 查询 Oracle XML DB 中存储的 XML 文档

添加 XML 索引,并演示在执行 XQuery 时解释计划如何变化

使用 XQuery 创建 XML 视图,以及使用 XQuery 查询 XML 视图

从 XML 视图创建虚拟 XML 文档,以及使用 XQuery 查询这些 XML 文档

在资源视图中使用 XQuery 从 XML 信息库检索信息

使用 XQuery 转换 XML 文档

使用 XQuery 通过 JDBC 查询 Oracle XML DB

将光标置于该图标上可以隐藏所有的屏幕截图。

oracle+xquery函数,xquery相关推荐

  1. XQuery 函数概述

    XQuery 1.0.XPath 2.0 以及 XSLT 2.0 共享相同的函数库. XQuery 函数 XQuery 含有超过 100 个内建的函数.这些函数可用于字符串值.数值.日期以及时间比较. ...

  2. oracle+xquery函数,Oracle XQuery查询、构建和转换XML

    查询 Oracle XML DB 信息库中的 XML 数据 为访问 Oracle XML DB 信息库中存储的 XML 数据,Oracle XQuery 引入了 fn:doc 和 fn:collect ...

  3. oracle+xquery函数,Oracle XQuery查询、构建和转换XML(2)

    查询 Oracle XML DB 信息库中的 XML 数据 为访问 Oracle XML DB 信息库中存储的 XML 数据,Oracle XQuery 引入了 fn:doc 和 fn:collect ...

  4. Oracle round函数是什么意思?怎么运用?

    如何使用 Oracle Round 函数 (四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果. SELECT ROUND( number, [ decimal_p ...

  5. oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…

    Oracle 分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内 ...

  6. oracle+cast函数+长度,oracle cast() 函数问题

    oracle cast() 函数问题 关键字: oracle cast() 函数问题 SQL> create table t1(a varchar(10)); Table created. SQ ...

  7. Oracle trunc()函数的用法

    --Oracle trunc()函数的用法 /**************日期********************/ 1.select trunc(sysdate) from dual  --20 ...

  8. oracle显示当天日期函数,oracle日期函数

    oracle日期函数 1.日期时间间隔操作  当前时间减去7分钟的时间 select sysdate,sysdate - interval '7' MINUTE from dual 当 ...

  9. ORACLE时间函数(SYSDATE)深入理解

    ORACLE时间函数(SYSDATE)深入理解 加法  select sysdate,add_months(sysdate,12) from dual; --加1年  select sysdate,a ...

最新文章

  1. vscode使用教程python-用VSCode写python的正确姿势
  2. python中a=a+2与a+=2的区别
  3. Java后端学习路线【哔哩哔哩网站】【Java基础、SSM框架、Maven、Mysql、Idea的使用、Springboot、Sprinfcloud、设计模式】
  4. 【混淆矩阵】matlab画混淆矩阵
  5. MATLAB自定义画布大小
  6. equals 和 == 的区别?知乎转载
  7. 前沿 | 谷歌用深度学习进行深度预测
  8. UE4 美术学习笔记和经验
  9. BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
  10. python求两个数的最大值、用带参函数实现_Python有参函数使用代码实例
  11. linux下安装nginx和配置
  12. (原創) 如何控制DE2 VGA輸出時某座標的顏色? (IC Design) (DE2) (Quartus II)
  13. 关于调研微信的几点理解
  14. [南阳OJ-No.33]蛇形填数|在n*n方陈里填入1,2,...,n*n,要求填成蛇形。
  15. oracle宿主常量及变量,ORACLE之 LOB 数据类型
  16. java workflow 教程_学习(史帝芬)osworkflow入门教程后的一些体会
  17. 三型两步验证登不上_苹果手机开启了双重认证,未信任的设备之前登入了,开启了双重认证未...
  18. Java 将两个日期的时间段按照一定天数进行周期切割
  19. 使用 htop 和 ps 来监控 Linux 运行
  20. 解决在SQLYog中执行SQL语句会提示错误的信息,但数据能查出来

热门文章

  1. 多媒体文件格式之ASF
  2. 文件操作 with open xxx as f: 的用法
  3. 计算机教学行为的改进,应用信息技术教学的好处和改进措施
  4. 试试这只蓝色企鹅!印度夫妇开发的聊天机器人可以帮你缓解抑郁情绪
  5. 【deepin】安装x11vnc和xrdp,使用windows远程deepin
  6. Android逆向系列--JDWP协议
  7. ThinkPad SL300/SL400/SL500 Vista Ultimate SP1 32位简
  8. Dynamically Incremental OD
  9. Gradle DEBUG调试
  10. 飞书远程会议系统,简洁不简单,会议更高效!