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


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

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Внимание

Директива XMLDATA для параметра XML FOR является нерекомендуемой. В режимах RAW и AUTO следует использовать создание XSD-схем. В режиме EXPLICT для директивы XMLDATA замены нет. Эта функция будет удалена в будущей версии 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') ] ]

Синтаксис для базы данных SQL Azure

Документацию по предложению SELECT...FOR XML, которая также применима к базе данных SQL Azure, см. в статье FOR XML (SQL Server).

Аргументы

RAW [('ElementName')]

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

АВТОМАТИЧЕСКИ

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

EXPLICIT

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

ПУТЬ

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

MLDATA

Указывает, что будет возвращена встроенная XDR-схема. Эта схема присоединяется к документу в качестве встроенной схемы. Работающий пример см. в статье Использование с RAW Mode для FOR XML.

XMLSCHEMA

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

ELEMENTS

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

BINARY BASE64

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

ТИП

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

ROOT [('RootName')]

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

См. также