Skip to Main Content

Español

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!

Manejo de XML en pl/SQL

Angelus1511Jan 11 2018 — edited Feb 6 2018

Saludos,

Tengo el siguiente inconveniente. Soy nuevo en el manejo de XML, y estoy actualizando un procedimiento que crea productos, el SP recibe un XML que es leído mediante un cursor recorre los diferentes productos a crear y guarda. el XML tiene diferentes tags o nodos que derivan del tag principal que es <productos>. y la asignación de las variables es directa para luego usar los atributos y guardar en tablas. Ahora lo que tengo que actualizar es introducir un tag nuevo <dimensiones> donde esta tiene los tags hijos <atributo> y <valor> . como puedo leer este tag <dimensiones> que se repite n veces dentro del XML y ya esta en loop para recorrer los diferentes productos. les anexo código. ayuda por favor.

<ProductoCrearRequest>
                    <Header>
                                       <ClientService>
                                                           <Country>CL</Country>
                                       </ClientService>
                    </Header>
                    <Body>
                                       <MessageId>777</MessageId>
                                       <Productos>
                                                           <Secuencia>1</Secuencia>
                                                           <Subclase>aa</Subclase>
                                                           <Up>11</Up>
                                                           <IndicadorEstilo>F</IndicadorEstilo>
                                                           <Dimensiones>
                                                                               <Atributo>Color</Atributo>
                                                                               <Valor>COLORES NRF (AMC)</Valor>
                                                           </Dimensiones>
                                                           <Dimensiones>
                                                                               <Atributo>CodigoColor</Atributo>
                                                                               <Valor>001</Valor>
                                                           </Dimensiones>
                                                           <Dimensiones>
                                                                               <Atributo>Talla</Atributo>
                                                                               <Valor>TALLAS RR</Valor>
                                                           </Dimensiones>
                                                           <Dimensiones>
                                                                               <Atributo>CodigoTalla</Atributo>
                                                                               <Valor>37</Valor>
                                                           </Dimensiones>
                                                           <Inflamable>true</Inflamable>
                                                           <Caducidad>true</Caducidad>                                                  
                                                           <id>12345</id>
                                       </Productos>
                    </Body>
</ProductoCrearRequest>


parte del procedimiento

Cursor Datos is
      select enc.*, det.*
        from -- Encabezado
              (SELECT *
                 FROM XMLTABLE('ProductoCrearRequest/Body' passing
                               xmltype(v_Mensaje) columns MessageId Number path
                               'MessageId')
                               xmlt) enc,
             -- Detalle
             (SELECT *
                FROM XMLTABLE('ProductoCrearRequest/Body/Productos' passing
                              xmltype(v_Mensaje) columns Secuencia Number path
                              './Secuencia',
                              Subclase char(15) path './Subclase',
                              Up Number(13) path './Up',
                              IndicadorEstilo char(1) path
                              './IndicadorEstilo',
    --  +  Mi problema  Nodo Dimensiones +
          Inflamable float path './Inflamable',
                              Caducidad float path './Caducidad',
                              id varchar3(1) path './id') xmlt) det;

Comments
Post Details
Added on Jan 11 2018
1 comment
9,569 views