sql >> Databáze >  >> RDS >> Oracle

získání názvu a hodnoty z atributu xmltype v oracle

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.



  1. Porušuje MySQL standard tím, že umožňuje výběr sloupců, které nejsou součástí skupiny podle klauzule?

  2. Použití aliasu v dotazu má za následek, že příkaz není správně ukončen

  3. SUM() na základě jiné podmínky než SELECT

  4. SQL a jedinečné kombinace n-sloupců