使用 XQuery 查询 DB2 XML 数据
2009-11-11 00:00:00 来源:WEB开发网
清单 2. 返回客户联系方式数据的简单 XQueryxquery db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')
您可能还记得,在我们的数据库模式中(参见 “样本数据库” 小节),我们将那些 XML 文档存储在 “clients” 表的 “contactinfo” 列中。注意,这里的列名和表名是大写的。这是因为表名和列名在被写入到 DB2 的内部编目之前通常要换成大写形式。由于 XQuery 是大小写敏感的,因此小写的表名和列名不能与 DB2 编目中的大写名称相匹配。
检索特定的 XML 元素
首先我们来看一个基本的任务。假设您要检索所有提供了有关传真信息的客户的传真号。清单 3 给出了编写该查询的一种方式:
清单 3. 检索客户传真数据的 FLWOR 表达式xquery
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client/fax
return $y
第一行指示 DB2 调用它的 XQuery 解析器。接下来的一行指示 DB2 对包含在 CLIENTS.CONTACTINFO 列中的 Client 元素的 fax 子元素进行迭代。每个 fax 元素被依次与变量 $y 绑定。第三行指出在每次迭代中返回 $y 的值。结果为一系列的 XML 元素,如 清单 4 所示:
清单 4. 上述查询的示例输出<fax>4081112222</fax>
<fax>5559998888</fax>
随便提一下,这里的输出还将包含与本文关系不大的一些信息:XML 版本和编码数据,例如 <?xml version="1.0" encoding="windows-1252" ?>,以及 XML 名称空间信息,例如 <fax xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">。为了使输出更简单,本文省略了这些信息。然而,对于很多 XML 应用程序来说这些信息可能很重要。如果使用 DB2 命令行处理器来运行查询,那么可以使用 -d 选项来省略 XML 声明信息,还可以使用 -i 选项以一种美观的方式打印结果。
更多精彩
赞助商链接