如果在查询中为 @type 属性指定一个名称空间,如清单 27 所示,那么示例 XML 文档中没有符合条件的文档。在这种情况下,DB2 不返回记录:
清单 27. 经过修改的 XQueryxquery declare namespace c="urn:xmlns:saracco-sample:company1.0";
for $x in db2-fn:xmlcolumn('PARTNERS.DETAILS')/c:company
where $x/@c:type="public"
return $x/c:name %
如果要使用 SQL/XML 来检索公开招股公司的名称,那么可以编写一个如下所示的查询:
清单 28. 与清单 25 中显示的 XQuery 等效的 SQL/XMLselect xmlquery('declare namespace x="urn:xmlns:saracco-sample:company1.0";
$c/x:company/x:name' passing details as "c")
from partners
where xmlexists('declare namespace x="urn:xmlns:saracco-sample:company1.0";
$c/x:company[@type="public"]' passing details as "c") %
案例 9:将 XML 数据转换成关系数据
最后,如何将包含名称空间的 XML 数据转换成关系数据?很多已有的应用程序和商业工具(例如查询/报告编写器)可以用来使用存储在 VARCHAR、INT、DATE 等传统数据类型的列中的数据。因此,程序员可以使用 SQL/XML() 函数动态地将 XML 数据转换成更传统的 SQL 数据类型。
当然,原始 XML 数据中存在的名称空间将对如何编写那样的 “转换” 查询造成一定的影响。考虑下面的例子,该查询检索关于业务伙伴的信息,它的 status 必须为 “Silver”,它的公司数据必须与一个给定的名称空间相关联。该查询返回公司的 ID 和名称,以及公司联系人的姓名和电子邮件地址。
相关专题
- (3663篇文章)SQL Server 索引和查询专题
- (1621篇文章)XML详解
- (651篇文章)开发应用
- (908次浏览)XML基础教程
- (752次浏览)XML简介
- (741次浏览)如何读取XML文件内容
- (634次浏览)XML与面向Web的数据挖掘技术
- (521次浏览)了解 XML实现通用的数据访问
- (501次浏览)XML的简单读取与写入
- (447次浏览)XML入门精解之文件格式定义(DTD)
- (375次浏览)DOM的结构
- (361次浏览)XML Spy实例教程
- (354次浏览)XML入门之11问答



