Compartir a través de


Heurística del modo AUTO para dar forma al XML devuelto

Se aplica a: SQL Server Azure SQL Database No compatible. Azure Synapse Analytics No compatible. Analytics Platform System (PDW)

El modo AUTO determina la forma del XML devuelto en función de la consulta. Al determinar cómo se anidan los elementos, la heurística del modo AUTO compara los valores de columna de filas adyacentes. Se comparan columnas de todos los tipos, excepto ntext, text, imagey xml. Se comparan columnas de tipo (n)varchar(max) y varbinary(max) .

El siguiente ejemplo muestra la heurística del modo AUTO que determina la forma del XML resultante:

SELECT T1.Id, T2.Id, T1.Name
FROM   T1, T2
WHERE Col1 = 1 /* actual predicate goes here*/
ORDER BY T1.Id
FOR XML AUTO;

Para determinar dónde se inicia un nuevo elemento <T1>, todos los valores de columna de T1, excepto ntext, text, image y xml, se comparan si no se especifica la clave de la tabla T1. Después imagine que la columna Name es de tipo nvarchar(40) y que la instrucción SELECT devuelve este conjunto de filas:

T1.Id  T1.Name  T2.Id
-----------------------
1       Andrew    2
1       Andrew    3
1       Nancy     4

La heurística del modo AUTO compara todos los valores de la tabla T1, las columnas Id y Name. Las dos primeras filas tienen los mismos valores para las columnas Id y Name. Como resultado, se agrega un solo elemento <T1>, que tiene dos elementos secundarios <T2>, al resultado.

A continuación se muestra el XML devuelto:

<T1 Id="1" Name="Andrew">
    <T2 Id="2" />
    <T2 Id="3" />
</T1>
<T1 Id="1" Name="Nancy" >
      <T2 Id="4" />
</T>

Ahora supongamos que la columna Name es de tipo de texto . La heurística del modo AUTO no compara los valores de este tipo. En su lugar, supone que los valores no son los mismos. Este modo genera el XML que se muestra en la salida siguiente:

<T1 Id="1" Name="Andrew" >
  <T2 Id="2" />
</T1>
<T1 Id="1" Name="Andrew" >
  <T2 Id="3" />
</T1>
<T1 Id="1" Name="Nancy" >
  <T2 Id="4" />
</T1>

Consulte también