DB2 9 根蒂根基(730 考试)认证指南,第 7 部分: XQuery 简介(7)

developerWorks








条件逻辑

可以操作几个简单的环节字将条件逻辑联合进 XQuery 中。

假定您要联合每位客户。您最企望经由历程电子邮件与他们获得联合,但假设没有他们的电子邮件地点,那么就向他们家里打德律风。假设也没有家庭德律风号码,就经由历程邮局邮寄一封信。因此,需求盘考 DB2 clients 表,获得一个包罗每个客户的单一电子邮件地点、家庭德律风号码或邮政地点的会商列表。

假设将条件逻辑联合进 XQuery 中,这个使命就很随意完成。获得所需信息的一种步伐如下:

清单 33. 具有分三部分的条件表达式的 XQuery

                    
xquery 
for $y in db2-fn:xmlcolumn('CLIENTS.CONTACTINFO')/Client 
return ( 
  if ($y/email) then $y/email[1] 
  else if ($y/phone/home) then <homePhone>{$y/phone/home/text()}</homePhone>
  else $y/Address)


我们来看看这个盘考的第四行到第六行。可以看到,它们是 return 子句的组成部分,因此决意盘考的输入是什么。

第四行搜检文档中能否至多有一个 email 元素;假设有,那么它指定应该前去第一个 email 元素。假设没有 email 元素,那么执行第五行。它指示 DB2 在 phone 元素下寻觅 home 元素。假设文档中包罗家庭德律风号码,那么提取它的文本节点并作为新的 “homePhone” 元素的一部分前去。最后,假设客户的会商文件(XML 文档)中没有电子邮件地点和家庭德律风号码,那么 DB2 前去完好的 Address 元素。由于 clients 表 中的一切记录都包罗邮政地点,所以这个盘考的逻辑确保 DB2 会为每个客户前去一种会商编制。

这个盘考的输入是:

清单 34. 盘考输入

                    
<email>
	love2shop@yahoo.com
</email>
<Address>
	<street>
		1204 Meridian Ave.
	</street>
	<apt>
		4A
	</apt>
	<city>
		San Jose
	</city>
	<state>
		CA
	</state>
	<zip>
		95124
	</zip>
</Address>
<homePhone>
	4083332222
</homePhone>
<email>
	golfer12@yahoo.com
</email>
<email>
	beatlesfan36@hotmail.com
</email>
<homePhone>
	6503310091
</homePhone>






版权声明: 原创作品,答理转载,转载时请务必以超链接编制标明文章 原始出处 、作者信息和本声明。不然将追究执法责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1972934.html