Иллюстрированный самоучитель по SQL для начинающих

SQL:2003 и XML

Получение XML результатов при использовании операторов SQL

SQL: 2003 имеет пять операторов, XMLELEMENT, XMLFOREST, XMLGEN, XMLCONCAT и XMLAGG, которые при применении к содержимому базы данных SQL дают XML-результат.

Оператор XMLELEMENT

Оператор XMLELEMENT создает XML-элемент. Этот оператор может использоваться в операторе SELECT для помещения данных формата XML в базу данных SQL. Рассмотрим следующий пример:

SELECT с.LastName
XMLELEMENT (NAME "City", c.City) AS "Result"
FROM CUSTOMER С
WHERE LastName="Abelson";

Возвращаемый результат:

LastName Result
Abelson <City>Springfield</City>

Оператор XMLFOREST

Оператор XMLFOREST создает дерево (forest) элементов из списка аргументов. Каждый аргумент оператора создает новый элемент. Ниже приведен пример использования такого оператора.

SELECT с. LastNartie
XMLFOREST (с.City,
с.AreaCode,
с.Telephone) AS "Result"
FROM CUSTOMER с
WHERE LastName="Abelson" OR LastName="Bailey";

В результате вы получите следующую информацию:

LastName Result
Abelson <City>Springfield</City>
<AreaCode>714</AreaCode>
<Telephone>555-llll</ Telephone>
Bailey <City>Decatur</City>
<AreaCode>714</AreaCode>
<Telephone>555-llll</ Telephone>

Оператор XMLGEN

Первый аргумент оператора XMLGEN – это шаблон, который содержит символы-заполнители для значений, которые будут добавлены позже. Символы-заполнители представлены в форме "{$name}". Последовательность аргументов задает значения и связанные с ними имена, которые характеризуют шаблон. Ниже приведен пример использования этого оператора.

SELECT с.LastName
XMLGEN ('<CUSTOMER Name="{$LASTNAME}">
<City>{$CITY}</City>
</CUSTOMERS,
c.LastName AS Name,
с City) AS "Result"
FROM CUSTOMER с
WHERE LastName="Abelson" OR LastName="Bailey";

Результат будет следующим:

LastName Result
Abelson <CUSTOMER Name="Abelson"
<City>Springfield</City>
</CUSTOMER>
Bailey <CUSTOMER Name="Bailey"
<City>Decatur</City>
</CUSTOMER>
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.