Поделиться через


Базовый синтаксис предложения FOR XML

Режим FOR XML может быть RAW, AUTO, EXPLICIT или PATH. Он определяет форму результирующего XML-файла.

Это важно

Директива XMLDATA для параметра FOR XML устарела. В режимах RAW и AUTO следует использовать создание XSD-схем. В режиме EXPLICT не существует замены директивы XMLDATA. Эта функция будет удалена в будущей версии Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

Ниже приведен базовый синтаксис, описанный в предложении FOR (Transact-SQL):

[ FOR { BROWSE | <XML> } ]  
<XML> ::=  
XML   
    {   
      { RAW [ ('ElementName') ] | AUTO }   
        [   
           <CommonDirectives>   
           [ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ]   
           [ , ELEMENTS [ XSINIL | ABSENT ]   
        ]  
      | EXPLICIT   
        [   
           <CommonDirectives>   
           [ , XMLDATA ]   
        ]  
      | PATH [ ('ElementName') ]   
        [   
           <CommonDirectives>   
           [ , ELEMENTS [ XSINIL | ABSENT ] ]  
        ]  
     }   
  
 <CommonDirectives> ::=   
   [ , BINARY BASE64 ]  
   [ , TYPE ]  
   [ , ROOT [ ('RootName') ] ]  

Аргументы

RAW[('ElementName')]
Принимает результат запроса и преобразует каждую строку в результирующем наборе в XML-элемент с универсальным идентификатором, <строкой />, как тег элемента. При использовании этой директивы можно указать имя элемента строки. Результирующий XML будет использовать указанный элемент ElementName в качестве элемента строки, созданного для каждой строки. Дополнительные сведения см. в статье Использование с RAW Mode для FOR XML.

АВТО
Возвращает результаты запроса в виде простого вложенного дерева XML. Каждая таблица в предложении FROM, для которой по крайней мере один столбец указан в предложении SELECT, представлен как XML-элемент. Столбцы, перечисленные в предложении SELECT, сопоставляются с соответствующими атрибутами элементов. Дополнительные сведения см. в статье Использование с AUTO Mode для FOR XML.

Явный
Указывает, что форма конечного дерева XML определена явно. С помощью этого режима запросы должны быть записаны определенным образом, поэтому дополнительные сведения о вложенном объекте указываются явным образом. Дополнительные сведения см. в статье Использование с EXPLICIT Mode для FOR XML.

ПУТЬ
Предоставляет более простой способ смешивания элементов и атрибутов, а также позволяет вводить дополнительное вложение для отображения сложных свойств. Запросы в режиме FOR XML EXPLICIT можно использовать для создания такого XML из набора строк, но режим PATH предоставляет более простую альтернативу запросам в режиме EXPLICIT. Режим PATH, а также возможность записывать вложенные запросы FOR XML и директиву TYPE для возврата экземпляров xml-типов , позволяет создавать запросы с меньшей сложностью. Он предлагает альтернативу написанию большинства запросов в режиме EXPLICIT. По умолчанию режим PATH создает обертку элемента <строки> для каждой строки в результирующем наборе. При необходимости можно указать имя элемента. Если вы это сделаете, указанное имя будет использоваться как имя элемента-оболочки. Если указать пустую строку (FOR XML PATH (')), элемент оболочки не создается. Дополнительные сведения см. в статье Использование с PATH Mode для FOR XML.

XMLDATA
Указывает, что необходимо вернуть встроенную XML-Data сокращенную схему (XDR). Схема добавляется к документу в виде встроенной схемы. Рабочий пример см. в разделе "Использование режима RAW с FOR XML".

XMLSCHEMA
Возвращает встроенную xml-схему W3C (XSD). При желании, указывая эту директиву, можно задать URI целевого пространства имен. Возвращает указанное пространство имен в схеме. Дополнительные сведения см. в разделе Создание встроенных схем XSD. Рабочий пример см. в разделе "Использование режима RAW с FOR XML".

Элементы
Если указан параметр ELEMENTS, столбцы возвращаются в виде подэлементов. В противном случае они сопоставляются с XML-атрибутами. Этот параметр поддерживается только в режимах RAW, AUTO и PATH. При использовании этой директивы можно указать XSINIL или ABSENT. XSINIL указывает, что создается элемент с атрибутом xsi:nil, установленным в True, для значений столбцов NULL. По умолчанию или при указании ОТСУТСТВУЕТ вместе с ЭЛЕМЕНТАМИ, элементы не создаются для значений NULL. Рабочий пример см. в разделе "Использование режима RAW с FOR XML " и использование режима AUTO с FOR XML.

BINARY BASE64
Если указан параметр BINARY Base64, все двоичные данные, возвращаемые запросом, представлены в формате в кодировке Base64. Чтобы получить двоичные данные с помощью режима RAW и EXPLICIT, необходимо указать этот параметр. В режиме AUTO двоичные данные возвращаются в качестве ссылки по умолчанию. Рабочий пример см. в разделе "Использование режима RAW с FOR XML".

ТИП
Указывает, что запрос возвращает результаты в виде xml-типа . Дополнительные сведения см. в статье TYPE Directive in FOR XML Queries.

ROOT [('RootName')]
Указывает, что один элемент верхнего уровня будет добавлен в результирующий XML. Дополнительно можно указать имя корневого элемента, который необходимо сформировать. Значение по умолчанию — root.

См. также

Использование режима RAW вместе с FOR XML
Используйте режим AUTO с FOR XML
Использование режима EXPLICIT вместе с FOR XML
Использование режима PATH совместно с FOR XML
SELECT (Transact-SQL)
FOR XML (SQL Server)