02.10.2014


Oracle, XML, SQL запрос к переменной с типом XMLType


Категории: Oracle XML — Administrator

Oracle обладает мощными инструментами для работы с XML. Чтобы их задействовать, ваш XML-текст должен быть помещен в переменную с типом XMLType. В данной статье способы получения таких переменных подробно рассматриваться не будут, а будет произведено простейшее преобразование строки с XML.

Допустим у вас имеется переменная с типом XMLType и вы хотели бы использовать ее в SQL запросах. Получение табличных данных из такой переменной возможно через оператор XMLTABLE. Вот пример такого запроса:


SELECT p.*
  FROM XMLTABLE ( 'root/t' 
                  PASSING (XMLTYPE('
<root>                  
  <t id="1">Data 1</t>
  <t id="2">Data 2</t>  
  <t id="3">Data 3</t>  
  <t id="4">Data 4</t>  
</root>
'))
                  COLUMNS
                    clId   NUMBER PATH '@id',
                    clText VARCHAR2(255) PATH 'text()'
                 ) p



* Первый параметр — это строка XPath, которая задает nodes XML, которые будут выбираться из пакета.
* Второй параметр (через ключевое слово PASSING) содержит переменную с типом XMLType, часть содержимого которой вы хотите получить в виде таблицы. В нашем переменная создается через конструктор XMLTYPE просто из текстовой строки.
* Третий параметр COLUMNS описывает колонки таблицы и пути к ним. Обратите внимание, на то, что через символ @ можно получить доступ к атрибутам тэга (node XML), а через функцию text() можно получить содержимое тэга.

Результат выглядит примерно так:






Календарь


Архив