あなたは最初の試みでほとんどそこにいました。 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
最初の試みとの唯一の違いは、value
のxpathです。 属性。