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


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

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

Важное примечаниеВажно!

Директива XMLDATA для параметра XML FOR является устаревшей. В режимах 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 с универсальным идентификатором <row /> в качестве тега элемента. При использовании этой директивы можно дополнительно указать имя для элемента строки. Полученный в результате XML-документ будет использовать указанное имя ElementName в качестве элемента, сформированного для каждой строки. Дополнительные сведения см. в разделе Использование режима RAW.

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

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

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

  • XMLDATA
    Указывает, что будет возвращена встроенная XDR-схема. Эта схема присоединяется к документу в качестве встроенной схемы. Образцы реализации см. в разделе Использование режима RAW.

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

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

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

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

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