Při prvním pokusu jsi byl skoro tam. Při vyhodnocování cesty XPath, když jste uvnitř seznamu atributů pomocí /TableAConfig/@*
, nepotřebujete text()
získat hodnotu atributu v něm. Jste již na úrovni atributu, takže použijte pouze "tečku" .
pro aktuální uzel by bylo dostačující.
Zkuste tedy něco takového -
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
Jediný rozdíl oproti vašemu prvnímu pokusu je xpath u value
atribut.