WEB开发网
开发学院数据库Oracle Oracle XQuery查询、构建和转换XML 阅读

Oracle XQuery查询、构建和转换XML

 2007-05-05 12:04:35 来源:WEB开发网   
核心提示: SELECT XMLQuery('for $i in fn:doc("/public/employees/employees.xml")return;$i'RETURNING CONTENT) AS RESULT FROM DUAL;该查询应生成以下输出
SELECT XMLQuery('for $i in fn:doc("/public/employees/employees.xml")
return;
$i'
RETURNING CONTENT) AS RESULT FROM DUAL;

该查询应生成以下输出:

100
King
24000
101
Kochhar
17000
102
De Haan
17000

在以上 XQuery 中,fn:doc XQuery 函数用于访问 Oracle XML DB 信息库中存储的单个 XML 文档。但如果要处理一些具有相同或相似结构的 XML 文档(存储在同一 XML 信息库文件夹中),应该怎么做?这种情况下,另一个用于处理 XML 信息库资源的 XQuery 函数(即 fn:collection)可能会派上用场。本文稍后将介绍几个有关如何使用 fn:collection XQuery 函数的示例。

查询 XMLType 数据

XQuery 使您可以操作基于 XML 模式以及非基于模式的数据。以下示例演示了如何使用 XMLTable 函数从 OE 演示数据库模式中查询基于 PurchaseOrder XML 模式的 XMLType 表。

SELECT ttab.COLUMN_VALUE AS OrderTotal FROM purchaseorder,
XMLTable(
'for $i in /PurchaseOrder
where $i/User = "EABEL"
return;
{$i/Reference}
{fn:sum(for $j in $i/LineItems/LineItem/Part
return ($j/@Quantity*$j/@UnitPrice))}
'
PASSING OBJECT_VALUE
) ttab;

在以上示例中,您在 XMLTable 函数的 PASSING 子句中使用 OBJECT_VALUE 虚拟列将 purchaseorder 表作为上下文项传递给此处使用的 XQuery 表达式。XQuery 表达式计算用户 EABEL 请求的每个购买订单的总计,并为处理的每个订单生成一个 OrderTotal XML 元素。要访问生成的 XML,请使用 SELECT 列表中的 COLUMN_VALUE 虚拟列。最终的输出应如下所示:

上一页  1 2 3 4 5 6 7  下一页

Tags:Oracle XQuery 查询

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接