sql >> Base de Datos >  >> RDS >> Oracle

obtener el nombre y el valor del atributo xmltype en Oracle

Ya casi habías llegado con tu primer intento. Mientras evalúa XPath, cuando está dentro de la lista de atributos con /TableAConfig/@* , no necesitas text() para obtener el valor del atributo dentro de él. Ya está en el nivel de atributo, por lo que solo usa un "punto" . para el nodo actual sería suficiente.

Así que prueba algo como esto -

SELECT XMLElement("TableAConfigList",
    (SELECT
        XMLAgg(
           XMLElement("TableAConfig",
                XMLAttributes(
                    tmp."attr_name" as "name",
                    tmp."attr_text" as "value"
                )
            )
        ) from XMLTable('/TableAConfig/@*'
            passing TableA.TableA_config
            columns
               "attr_name" varchar(30) path 'name()',
               "attr_text" varchar(30) path '.'
        ) tmp
    )
) from dual

La única diferencia con su primer intento es el xpath del value atributo.