Oracle XML: извлечение нескольких записей в данном узле - PullRequest
0 голосов
/ 14 сентября 2018

Может ли кто-нибудь помочь с тем, как мне извлечь все RefID?И какой правильный тип данных я буду использовать?Вот XML ниже:

<?xml version="1.0" encoding="UTF-8"?>
<Query xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="OutputQuery">
 <OutputOption>
  <RefId>
     <long>9474841</long>
     <long>9436906</long>
     <long>9506794</long>
  </RefId>
 </OutputOption>
</Query>

Output:

RefID
-----
9474841
9436906
9506794

1 Ответ

0 голосов
/ 14 сентября 2018

Этот запрос должен дать вам то, что вам нужно:

select RefId
from
  xmltable(
    '/Query/OutputOption/RefId/long'
    passing xmltype(
      q'[<?xml version="1.0" encoding="UTF-8"?>
<Query xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="OutputQuery">
  <OutputOption>
    <RefId>
       <long>9474841</long>
       <long>9436906</long>
       <long>9506794</long>
    </RefId>
  </OutputOption>
</Query>
      ]'
    )
    columns RefId number path '/'
  )
;

Тип данных, который вам понадобится, - XMLTYPE.

...