Бяхте почти там с първия си опит. Докато оценявате XPath, когато сте в списъка с атрибути с /TableAConfig/@*
, нямате нужда от text()
за да получите стойността на атрибута вътре в него. Вече сте на ниво атрибут, така че използвате само "точка" .
за текущия възел би било достатъчно.
Така че опитайте нещо подобно -
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
Единствената разлика от първия ви опит е xpath на value
атрибут.