Как преобразовать строку XML, в которой каждая «строка» объединяет имя столбца и его значение, в xmltable? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть XML, где каждый элемент ниже корня представляет собой строку; каждая строка состоит из ровно одного имени столбца и его значения столбца. Как мне преобразовать указанный XML в XMLTable?

Я пытался создать XMLTable из пути '/ root / line' (см. Код ниже).

with myxml as
 (select '<root><line><column>X</column><value_of_column>1</value_of_column></line><line><column>Y</column><value_of_column>2</value_of_column></line></root>' xml
    from dual)
select * from xmltable('/root/line' passing (select xml from myxml) columns "Name" varchar2(255) path '/root/line/column', "Value" varchar2(255) path '/root/line/value_of_column');

Я ожидаю, что результат будет:

   Name | Value
   ------------
   X    | 1
   Y    | 2

Но фактическим выводом является сообщение об ошибке: ORA-19224: XPTY0004 - несоответствие статического типа XQuery: ожидается - node () * got - xs: string

1 Ответ

0 голосов
/ 11 июня 2019

Нашел решение.Кажется, что здесь главное - передать XMLType при использовании предложения PASSING:

with myxml as
 (select '<root><line><column>X</column><value_of_column>1</value_of_column></line><line><column>Y</column><value_of_column>2</value_of_column></line></root>' xml
    from dual)
select *
  from xmltable('/root/line' passing xmltype((select xml from myxml)) columns "Name" varchar2(255) path 'column',
                "Value" varchar2(255) path 'value_of_column');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...