Создание XML с помощью предложения FOR XML

Запрос SELECT возвращает результаты в виде набора строк. При необходимости можно получать результаты SQL-запроса в формате XML. Для этого в запросе необходимо указать предложение FOR XML. В предложении FOR XML можно указать один из следующих режимов:

  • RAW
  • AUTO
  • EXPLICIT
  • PATH

В режиме RAW создается одиночный элемент <row> для каждой строки набора строк, возвращенного инструкцией SELECT. XML-иерархию можно создать с помощью написания вложенных запросов FOR XML.

В режиме AUTO вложенность XML создается эвристически, в зависимости от метода определения инструкции SELECT. Управление формой создаваемой XML структуры минимально. Для создания XML-иерархии, расширяющей возможности XML-структуры, созданной эвристически в режиме AUTO, можно написать вложенные запросы FOR XML.

Режим EXPLICIT предоставляет больше возможностей по управлению формой XML-структуры. В XML-структуре могут быть использованы смешанные атрибуты и элементы. Это требует особого формата для результирующего набора строк, создаваемого в результате выполнения запроса. Формат этого набора строк затем сопоставляется с формой XML-структуры. Преимущества режима EXPLICIT состоят в возможности использования смешанных атрибутов и элементов, в возможности создания упаковщиков и вложенных составных свойств, создания значений, разделенных пробелами (например атрибут OrderID может содержать список значений идентификаторов порядка), и смешанного содержимого.

Однако написание запросов в режиме EXPLICIT может быть очень обременительным. Можно использовать некоторые новые возможности предложения FOR XML, например написание вложенных запросов FOR XML в режиме RAW/AUTO/PATH и директивы TYPE вместо использования режима EXPLICIT для создания иерархий. Вложенные запросы FOR XML могут создавать любую XML структуру, которую можно создать с помощью режима EXPLICIT. Дополнительные сведения см. в разделах Вложенные запросы FOR XML и Директива TYPE в запросах FOR XML.

Режим PATH совместно с вложенным запросом FOR XML обеспечивает гибкость режима EXPLICIT более простым образом.

Эти режимы на самом деле работают только при выполнении запросов, для которых они установлены. Они не влияют на результаты любых последующих запросов.

См. также

Справочник

Базовый синтаксис предложения FOR XML
Правила по использованию предложения FOR XML
Использование режима RAW
Использование режима AUTO
Применение режима EXPLICIT
Новые возможности FOR XML
Запросы XML с использованием OPENXML
Использование предложений FOR XML и OPENXML для публикации и обработки XML-данных

Основные понятия

Использование режима PATH
Образцы приложений XML
Добавление пространств имен с помощью предложения WITH XMLNAMESPACES

Справка и поддержка

Получение помощи по SQL Server 2005