Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Extract a repeated element

LuKyonoJan 21 2011 — edited Jan 24 2011
Hi!

I'm using Oracle 10gR2.

How can I extract the value from the IUM tag? Is this sintax correct (an element repeated many times without a group above it)?

When it's an attribute of cxMed tag, I can do what I need (code below).
  WITH tmp AS
  (SELECT XMLTYPE('<root>
                    <inf>
                      <det nItem="1">
                        <prod>
                          <med>
                            <nLote>lote 0</nLote>
                            <qLote>0</qLote>
                            <dFab>2011-03-01</dFab>
                            <dVal>2012-03-01</dVal>
                            <vPMC>300</vPMC>
                          </med>
                          <med>
                            <nLote>lote 1</nLote>
                            <qLote>1</qLote>
                            <dFab>2011-01-01</dFab>
                            <dVal>2012-01-01</dVal>
                            <vPMC>100</vPMC>
                            <IUM>1</IUM>
                            <IUM>2</IUM>
                            <IUM>3</IUM>
                            <IUM>4</IUM>
                            <IUM>5</IUM>
                          </med>
                          <med>
                            <nLote>lote 2</nLote>
                            <qLote>2</qLote>
                            <dFab>2011-02-02</dFab>
                            <dVal>2012-02-02</dVal>
                            <vPMC>200</vPMC>
                            <cxMed IUM="1">
                              <IUC>21</IUC>
                            </cxMed>
                            <cxMed IUM="2">
                              <IUC>22</IUC>
                            </cxMed>
                            <cxMed IUM="3">
                              <IUC>23</IUC>
                            </cxMed>
                          </med>
                          <med>
                            <nLote>lote 4</nLote>
                            <qLote>4</qLote>
                            <dFab>2011-04-01</dFab>
                            <dVal>2012-04-01</dVal>
                            <vPMC>300</vPMC>
                          </med>
                        </prod>
                      </det>
                      <det nItem="2">
                        <prod>
                          <med>
                            <nLote>lote 1</nLote>
                            <qLote>1</qLote>
                            <dFab>2011-01-01</dFab>
                            <dVal>2012-01-01</dVal>
                            <vPMC>100</vPMC>
                            <IUM>1</IUM>
                            <IUM>2</IUM>
                            <IUM>3</IUM>
                            <IUM>4</IUM>
                            <IUM>5</IUM>
                          </med>
                        </prod>
                      </det>
                    </inf>
                  </root>') as XMLArquivo from dual
  )
          SELECT --/NFe/infNFe/det
                 vw.nItem,
                 --/NFe/infNFe/det/prod/med
                 vw2.IdMedicamento,
                 vw3.IdIUM,
                 vw3.IUM,
                 vw3.IUC
            FROM tmp,
            XMLTABLE('/root/inf/det'
                     PASSING tmp.XMLArquivo
                     COLUMNS
                       nItem  NUMBER(3) PATH '@nItem', 
                       medXML XMLTYPE   PATH 'prod/med') vw,
            XMLTABLE('/med'
                     PASSING vw.medXML
                     COLUMNS
                       IdMedicamento FOR ORDINALITY,
                       cxMedXML XMLTYPE PATH 'cxMed') vw2,
            XMLTABLE('/cxMed'
                     PASSING vw2.cxMedXML
                     COLUMNS
                       IdIUM FOR ORDINALITY,
                       IUM NUMBER(13) PATH '@IUM',
                       IUC NUMBER(18) PATH 'IUC') vw3
Thanks,
Luciana

Edited by: Luciana on Jan 21, 2011 8:33 AM

Edited by: Luciana on Jan 21, 2011 8:34 AM

Edited by: Luciana on Jan 21, 2011 9:47 AM
This post has been answered by odie_63 on Jan 23 2011
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 21 2011
Added on Jan 21 2011
4 comments
319 views