Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы 2 / лаб_раб_3 / Лаб раб 7 XML и MS SQL Server 2011 12 04.doc
Скачиваний:
40
Добавлен:
26.04.2015
Размер:
1.2 Mб
Скачать

Извлечение xml-данных с помощью предложения for xml Режим запроса raw

Предложение FOR XML используется в инструкции Transact-SQL SELECT для извлечения данных в виде XML вместо строк и столбцов. Для управления форматом XML доступны следующие режимы: RAW, AUTO, EXPLICIT или PATH. Также для управления выводом данных доступны различные параметры.

Запросы в режиме RAW используются для извлечения набора строк в виде XML. Приложения могут обрабатывать XML-данные в встроенном формате или применять к ним таблицу стилей XSLT для преобразования этих XML-данных в требуемый формат делового документа или представление интерфейса пользователя.

12. Пример извлечения данных из реляционной таблицы и преобразования к XML:

use AdventureWorksLT

select b.Name as Name_Categorya, a.Name as Name_product FROM

SalesLT.Product a inner join SalesLT.ProductCategory b ON

a.ProductCategoryID=b.ProductCategoryID

FOR XML RAW

Результат:

<row Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 38"/><row Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 42"/><row Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 44"/><row Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 48"/><row Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Black, 38"/>

13. Пример извлечения данных из реляционной таблицы и преобразования к XML, сравнить с предыдущим результатом:

use AdventureWorksLT

select b.Name as Name_Categorya, a.Name as Name_product FROM

SalesLT.Product a inner join SalesLT.ProductCategory b ON

a.ProductCategoryID=b.ProductCategoryID

FOR XML RAW('product')

Результат:

<product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 38"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 42"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 44"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 48"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Black, 38"/>

14. Пример извлечения данных из реляционной таблицы и преобразования к XML, сравнить с предыдущим результатом:

use AdventureWorksLT

select b.Name as Name_Categorya, a.Name as Name_product FROM

SalesLT.Product a inner join SalesLT.ProductCategory b ON

a.ProductCategoryID=b.ProductCategoryID

FOR XML RAW('product'),ROOT('Products')

Результат:

<Products>

<product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 38"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 42"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 44"/><product Name_Categorya="Mountain Bikes" Name_product="Mountain-100 Silver, 48"/>

</Products>

Режим запроса AUTO

В результате выполнения запросов в режиме AUTO создается XML-представление объектов данных:

  • Каждая строка, возвращаемая данным запросом, представлена элементом XML, имя которого соответствует имени таблицы, из которой он был извлечен (или псевдониму, используемому в запросе).

  • Каждая инструкция JOIN в запросе приводит к возврату вложенного элемента XML, что уменьшает дублирование данных в результирующем фрагменте XML. Порядок инструкций JOIN влияет на порядок расположения элементов.

  • Чтобы обеспечить корректность связи дочерних элементов с соответствующими родительскими элементами, данные должны быть возвращены в верном порядке иерархии с использованием предложения ORDER BY.

  • Каждый столбец в результирующем наборе представлен атрибутом, если не указан параметр ELEMENTS. В последнем случае столбцы представлены в виде дочерних элементов.

15. Пример извлечения данных из реляционной таблицы и преобразования к XML:

use AdventureWorksLT

select b.Name as Name_Categorya, a.Name as Name_product FROM

SalesLT.Product a inner join SalesLT.ProductCategory b ON

a.ProductCategoryID=b.ProductCategoryID

FOR XML AUTO

Результат:

<b Name_Categorya="Mountain Bikes">

<a Name_product="Mountain-100 Silver, 38" />

<a Name_product="Mountain-100 Silver, 42" />

<a Name_product="Mountain-100 Silver, 44" />

<a Name_product="Mountain-100 Silver, 48" />

<a Name_product="Mountain-200 Black, 38" />

<a Name_product="Mountain-200 Black, 42" />

<a Name_product="Mountain-200 Black, 46" />

</b>

<b Name_Categorya="Road Bikes">

<a Name_product="Road-350-W Yellow, 40" />

<a Name_product="Road-350-W Yellow, 42" />

<a Name_product="Road-350-W Yellow, 44" />

<a Name_product="Road-350-W Yellow, 48" />

<a Name_product="Road-750 Black, 58" />

</b>