我正在使用此循环来解析XML。
substring-after(//tr[@data-project-key='AA']/td[@data-cell-type='name']/a/@id,'view-project-')
xml的格式:
Use Tidy
解析后,我将元素详细信息值传递给其他过程: FOR elementdetails in
(SELECT ExtractValue(Value(elementdetails),'/details/Id/text()') AS Id,
Extract(Value(elementdetails),'/details/GrpId') AS Idgrp,
ExtractValue(Value(elementdetails),'/details/SrCd/text()') AS PId
FROM TABLE(XMLSequence(Extract(Block,'/Records/Body/details)))
elementdetails)
: <Records>
<Body>
<details>
<Id>1</Id>
<GrpId>15</GrpId>
<SrCd>2</SrCd>
</details>
<details>
<Id>2</Id>
<GrpId>5</GrpId>
<SrCd>6</SrCd>
</details>
</Body>
</Records>
。
因此,在上面的示例中,循环将运行两次。
我的问题是:每当循环运行时,它执行select查询来解析整个xml或仅解析第一个详细信息标记然后解析第二个?
答案 0 :(得分:0)
在FOR循环查询中执行一次。
然后Oracle使用游标迭代
(它为每行查询结果执行循环体。)