DB2中XMLEXISTS查询未返回预期结果,请求修正查询语句
修正DB2 XML查询语句的方案
错误原因
你遇到的err:XPTY0019错误,核心是XML包含命名空间ns2:CustomerRequest但查询未声明并使用该命名空间,导致DB2无法正确解析路径节点,误将节点识别为原子值引发报错。
修正后的查询语句
需在XQuery中显式声明命名空间,同时确保路径节点前缀与XML命名空间一致。假设XML中ns2对应的命名空间URI为http://your-actual-namespace-uri(替换为你XML里的真实URI),修正语句如下:
SELECT * FROM CUSTOMER WHERE XMLExists ( 'declare namespace ns2="http://your-actual-namespace-uri"; $d//ns2:CustomerData[ns2:Name="Inder"]' passing XML_DATA as "d" )
关键说明
- 绑定命名空间:
declare namespace ns2="..."必须和XML根节点xmlns:ns2="..."中的URI完全一致 - 节点前缀匹配:XML中属于
ns2命名空间的节点(比如CustomerData、Name),在XQuery路径中必须加ns2:前缀,否则DB2无法定位正确节点 - 获取真实URI:若不确定URI,可先执行
SELECT XML_DATA FROM CUSTOMER FETCH FIRST 1 ROW ONLY查看XML根节点属性,提取真实命名空间地址
内容的提问来源于stack exchange,提问作者inderjeet singh
相关产品推荐
相关产品推荐

