Oracle
 sql >> база данни >  >> RDS >> Oracle

получаване на име и стойност от атрибут xmltype в oracle

Бяхте почти там с първия си опит. Докато оценявате 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 атрибут.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Тест за производителност и настройка на Oracle

  2. Невалиден номер на Oracle, причинен от функцията to_char

  3. Материализирани изгледи - Идентифициране на последното опресняване

  4. Рекурсивен SQL и информация на различно ниво

  5. Как да получите редове от таблица, ако общите редове са повече от 10 в Oracle?