我使用函数SOAPHTTPNV从zOS上的Db2 9.1调用Db2服务。结果返回正常,但是webservice被多次调用,结果集中的每一行调用一次(或响应中元素行的出现)。为什么会这样呢?
SQL
SELECT T.NR_KAT, T.PNR_F
FROM
XMLTABLE(
xmlnamespaces ('http://schemas.xmlsoap.org/soap/envelope/' AS
"soap",
'http://schemas/SERVICE/100921' AS "p"),
'$d/soap:Envelope/soap:Body/p:SERVICE_RESPONSE/p:document/p:result/p:ROW'
PASSING XMLPARSE(
DOCUMENT DB2XML.SOAPHTTPNV(
'http://serviceurl',
VARCHAR(''),
VARCHAR('<soap:Envelope
request_simplified
</soap:Envelope>'
))) AS "d"
COLUMNS
NR_KAT VARCHAR(2) PATH 'p:NR_KAT',
PNR_F VARCHAR(12) PATH 'p:PNR_F'
) AS T
;SPUFI中的SQL结果
NR_KAT PNR_F
---------+---------+---------+---------+------
09 194513051834
08 194515042978
19 194515300398来自webservice的xml响应
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<SERVICE_RESPONSE xmlns="http://schemas/SERVICE/100921">
<document>
<result>
<ROW>
<NR_KAT>09</NR_KAT>
<PNR_F>194513051834</PNR_F>
</ROW>
<ROW>
<NR_KAT>08</NR_KAT>
<PNR_F>194515042978</PNR_F>
</ROW>
<ROW>
<NR_KAT>19</NR_KAT>
<PNR_F>194515300398</PNR_F>
</ROW>
</result>
</document>
</SERVICE_RESPONSE>
</Body>
</Envelope>发布于 2013-01-08 22:47:31
尝试使用XMLTABLE函数的BY REF子句:
SELECT T.NR_KAT, T.PNR_F
FROM XMLTABLE(xmlnamespaces ('http://schemas.xmlsoap.org/soap/envelope/' AS "soap",
'http://schemas/SERVICE/100921' AS "p"),
'$d/soap:Envelope/soap:Body/p:SERVICE_RESPONSE/p:document/p:result/p:ROW'
PASSING BY REF XMLPARSE(...))) AS D
COLUMNS NR_KAT VARCHAR(2) PATH 'p:NR_KAT',
PNR_F VARCHAR(12) PATH 'p:PNR_F') AS T
;发布于 2013-01-12 08:22:08
症状与APAR PM52237中描述的症状相匹配。APAR PM52237修复了为XMLTABLE返回的每行调用XMLTABLE函数的参数的问题。请确保已经在z/OS系统上安装了PTF UK77921(用于DB2 9)。
https://stackoverflow.com/questions/14124809
复制相似问题