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;