Oracle
 sql >> Base de données >  >> RDS >> Oracle

obtenir le nom et la valeur de l'attribut xmltype dans oracle

Vous y étiez presque lors de votre première tentative. Lors de l'évaluation du XPath, lorsque vous êtes dans la liste d'attributs avec /TableAConfig/@* , vous n'avez pas besoin de text() pour obtenir la valeur de l'attribut à l'intérieur. Vous êtes déjà au niveau de l'attribut, vous n'utilisez donc qu'un "point" . pour le nœud actuel serait suffisant.

Alors essayez quelque chose comme ça -

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 seule différence par rapport à votre première tentative est le xpath de la value attribut.