Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

lấy tên và giá trị từ thuộc tính xmltype trong oracle

Bạn gần như ở đó với nỗ lực đầu tiên của bạn. Trong khi đánh giá XPath, khi bạn ở trong danh sách thuộc tính với /TableAConfig/@* , bạn không cần text() để lấy giá trị của thuộc tính bên trong nó. Bạn đã ở cấp thuộc tính nên chỉ cần sử dụng "dấu chấm" . cho nút hiện tại là đủ.

Vì vậy, hãy thử một cái gì đó như thế này -

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

Sự khác biệt duy nhất so với lần thử đầu tiên của bạn là xpath của giá trị value thuộc tính.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp kết nối ODP.NET:Cách biết kết nối đã được sử dụng hay chưa

  2. Làm thế nào để CHỌN Cột, * TỪ BẢNG trong Oracle?

  3. Oracle - CHỌN DENSE_RANK OVER (ORDER BY, SUM, OVER và PARTITION BY)

  4. Loại bỏ các cặp đảo ngược bằng SQL

  5. Tên thủ tục đang thực hiện trong gói