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.