sql >> Database >  >> RDS >> Oracle

naam en waarde ophalen van xmltype-attribuut in oracle

Je was er bijna met je eerste poging. Tijdens het evalueren van de XPath, wanneer u zich in de attributenlijst bevindt met /TableAConfig/@* , je hebt text() niet nodig om de waarde van het attribuut erin te krijgen. U bevindt zich al op attribuutniveau, dus gebruik slechts een "punt" . voor huidige node zou voldoende zijn.

Dus probeer zoiets als dit -

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

Het enige verschil met je eerste poging is het xpath van de value attribuut.



  1. Hoe voeg je een PHP-constante in een SQL-query in?

  2. Is er een manier voor PHP om een ​​SQL-syntaxis te valideren zonder deze uit te voeren?

  3. lopend gemiddelde in mysql

  4. Het verwijderen van PostgresSql 9.6 werd plotseling traag