Sintaxis básica de la cláusula FOR XMLBasic Syntax of the FOR XML Clause

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelosAPPLIES TO: YesSQL Server YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

El modo de FOR XML puede ser RAW, AUTO, EXPLICIT o PATH.The FOR XML mode can be RAW, AUTO, EXPLICIT, or PATH. Determina la forma del XML resultante.It determines the shape of the resulting XML.

Importante

La directiva XMLDATA para la opción FOR XML está en desuso.The XMLDATA directive to the FOR XML option is deprecated. Utilice la XSD generación en los modos RAW y AUTO.Use XSD generation in the case of RAW and AUTO modes. No hay sustitución para la directiva XMLDATA en modo EXPLICIT.There is no replacement for the XMLDATA directive in EXPLICT mode. Esta característica está en modo de mantenimiento y es posible que no se incluya en una versión futura de Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

SintaxisSyntax

Aquí se muestra la sintaxis básica descrita en Cláusula FOR (Transact-SQL).Following is the basic syntax that is described in FOR Clause (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') ] ]  

Sintaxis para Azure SQL DatabaseSyntax for Azure SQL Database

Para obtener documentación de la cláusula SELECT...FOR XML que también se aplica a Azure SQL Database, vea FOR XML (SQL Server).For documentation of the SELECT...FOR XML clause that also applies to Azure SQL Database, see FOR XML (SQL Server).

ArgumentosArguments

RAW [('ElementName')]RAW [('ElementName')]
Obtiene el resultado de la consulta y transforma cada fila del conjunto de resultados en un elemento XML con un identificador genérico <row /> como etiqueta del elemento.Takes the query result and transforms each row in the result set into an XML element that has a generic identifier, <row />, as the element tag. Opcionalmente, puede especificar un nombre para el elemento de fila cuando se utiliza esta directiva.You can optionally specify a name for the row element when you use this directive. El XML resultante utilizará el ElementName especificado como el elemento de fila generado para cada fila.The resulting XML will use the specified ElementName as the row element generated for each row. Para obtener más información, vea Usar el modo RAW con FOR XML.For more information, see Use RAW Mode with FOR XML.

AUTOAUTO
Devuelve los resultados de la consulta en un árbol anidado XML sencillo.Returns query results in a simple, nested XML tree. Cada tabla en la cláusula FROM de la que al menos se presenta una columna en la cláusula SELECT se representa como un elemento XML.Each table in the FROM clause for which at least one column is listed in the SELECT clause is represented as an XML element. A las columnas presentadas en la cláusula SELECT se les asignan los atributos de elemento apropiados.The columns listed in the SELECT clause are mapped to the appropriate element attributes. Para obtener más información, vea Usar el modo AUTO con FOR XML.For more information, see Use AUTO Mode with FOR XML.

EXPLICITEXPLICIT
Especifica que la forma del árbol XML resultante está definida explícitamente.Specifies that the shape of the resulting XML tree is defined explicitly. Con este modo, es necesario escribir las consultas de una cierta manera, de modo que se pueda especificar explícitamente información adicional acerca de la anidación deseada.By using this mode, queries must be written in a particular way so additional information about the nesting you want is specified explicitly. Para obtener más información, vea Usar el modo EXPLICIT con FOR XML.For more information, see Use EXPLICIT Mode with FOR XML.

PATHPATH
Facilita la mezcla de elementos y atributos, así como la especificación de anidación adicional para representar propiedades complejas.Provides a simpler way to mix elements and attributes, and to introduce additional nesting for representing complex properties. Puede utilizar consultas FOR XML de modo EXPLICIT para construir XML a partir de un conjunto de filas, pero el modo PATH supone una alternativa más simple a las consultas de modo EXPLICIT potencialmente complicadas.You can use FOR XML EXPLICIT mode queries to construct this kind of XML from a rowset, but the PATH mode provides a simpler alternative to the possibly cumbersome EXPLICIT mode queries. El modo PATH, junto con la posibilidad de escribir consultas FOR XML anidadas y la directiva TYPE para devolver instancias de tipo xml , permite escribir consultas de forma más fácil.PATH mode, together with the ability to write nested FOR XML queries and the TYPE directive to return xml type instances, allows you to write queries with less complexity. Ofrece una alternativa para escribir la mayoría de las consultas de modo EXPLICIT.It provides an alternative to writing most EXPLICIT mode queries. El modo PATH genera un contenedor de elementos <row> de forma predeterminada por cada fila del conjunto de resultados.By default, PATH mode generates a <row> element wrapper for each row in the result set. También se puede especificar un nombre de elemento.You can optionally specify an element name. En este caso, el nombre especificado se utilizará como nombre del elemento contenedor.If you do, the specified name is used as the wrapper element name. Si se proporciona una cadena vacía (FOR XML PATH ('')), no se generará ningún elemento contenedor.If you provide an empty string (FOR XML PATH ('')), no wrapper element is generated. Para obtener más información, vea Usar el modo PATH con FOR XML.For more information, see Use PATH Mode with FOR XML.

MLDATAMLDATA
Especifica que se debe devolver un esquema XDR (XML-Data Reduced) insertado.Specifies that an inline XML-Data Reduced (XDR) schema should be returned. El esquema se antepone al documento como un esquema insertado.The schema is prepended to the document as an inline schema. Para obtener un ejemplo práctico, vea Usar el modo RAW con FOR XML.For a working sample, see Use RAW Mode with FOR XML.

XMLSCHEMAXMLSCHEMA
Devuelve un esquema XML W3C (XSD) insertado.Returns an inline W3C XML Schema (XSD). Opcionalmente, puede especificar un URI de espacio de nombres de destino al especificar esta directiva.You can optionally specify a target namespace URI when specifying this directive. De este modo, se devuelve el espacio de nombres especificado en el esquema.This returns the specified namespace in the schema. Para obtener más información, vea Generar un esquema XSD insertado.For more information, see Generate an Inline XSD Schema. Para obtener un ejemplo práctico, vea Usar el modo RAW con FOR XML.For a working sample, see Use RAW Mode with FOR XML.

ELEMENTSELEMENTS
Si se especifica la opción ELEMENTS, las columnas se devuelven como subelementos.If the ELEMENTS option is specified, the columns are returned as subelements. Sin embargo, se les asignan atributos XML.Otherwise, they are mapped to XML attributes. Esta opción solo se admite en los modos RAW, AUTO y PATH.This option is supported in RAW, AUTO, and PATH modes only. También puede especificar XSINIL o ABSENT cuando utilice esta directiva.You can optionally specify XSINIL or ABSENT when you use this directive. XSINIL especifica que se puede crear un elemento con un atributo xsi:nil establecido en True para los valores de columna NULL.XSINIL specifies that an element that has an xsi:nil attribute set to True be created for NULL column values. De forma predeterminada, o cuando se especifica ABSENT junto con ELEMENTS, no se crea ningún elemento para los valores NULL.By default or when ABSENT is specified together with ELEMENTS, no elements are created for NULL values. Para obtener un ejemplo práctico, vea Usar el modo RAW con FOR XML y Usar el modo AUTO con FOR XML.For a working sample, see Use RAW Mode with FOR XML and Use AUTO Mode with FOR XML.

BINARY BASE64BINARY BASE64
Si se especifica la opción BINARY Base64, todos los datos binarios que devuelve la consulta se representan en formato codificado base64.If the BINARY Base64 option is specified, any binary data returned by the query is represented in base64-encoded format. Para recuperar datos binarios mediante el modo RAW y EXPLICIT, se debe especificar esta opción.To retrieve binary data by using RAW and EXPLICIT mode, this option must be specified. En modo AUTO, de forma predeterminada, se devuelven datos binarios como una referencia.In AUTO mode, binary data is returned as a reference by default. Para obtener un ejemplo práctico, vea Usar el modo RAW con FOR XML.For a working sample, see Use RAW Mode with FOR XML.

TYPETYPE
Especifica que la consulta devuelve los resultados como el tipo xml .Specifies that the query returns the results as the xml type. Para más información, consulte TYPE Directive in FOR XML Queries.For more information, see TYPE Directive in FOR XML Queries.

ROOT [('RootName')]ROOT [('RootName')]
Especifica que se puede agregar un solo elemento de nivel superior al XML resultante.Specifies that a single, top-level element be added to the resulting XML. También se puede especificar el nombre del elemento raíz que se generará.You can optionally specify the root element name to generate. El valor predeterminado es <root>.The default value is <root>.

Consulte tambiénSee Also

Usar el modo RAW con FOR XML Use RAW Mode with FOR XML
Usar el modo AUTO con FOR XML Use AUTO Mode with FOR XML
Usar el modo EXPLICIT con FOR XML Use EXPLICIT Mode with FOR XML
Usar el modo PATH con FOR XML Use PATH Mode with FOR XML
SELECT (Transact-SQL) SELECT (Transact-SQL)
FOR XML (SQL Server)FOR XML (SQL Server)