Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Abrufen von Name und Wert aus dem xmltype-Attribut in Oracle

Beim ersten Versuch warst du fast am Ziel. Beim Auswerten des XPath, wenn Sie sich innerhalb der Attributliste mit /TableAConfig/@* befinden , brauchen Sie text() nicht um den Wert des darin enthaltenen Attributs zu erhalten. Sie befinden sich bereits auf der Attributebene, verwenden Sie also nur einen "Punkt" . für den aktuellen Knoten ausreichen.

Versuchen Sie also so etwas -

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

Der einzige Unterschied zu Ihrem ersten Versuch ist der xpath des value Attribut.