Compartir a través de


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

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, image y 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 ...
FOR XML AUTO
ORDER BY T1.Id

Para determinar dónde comienza un nuevo elemento <T1>, se comparan todos los valores de columna de T1, excepto ntext, text, image y xml, si no se especifica la clave en la tabla T1. A continuación, imagine que la columna Name es de tipo nvarchar(40) y 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. Puesto que las dos primeras filas tienen los mismos valores para las columnas Id y Name, se agrega al resultado un elemento <T1> que tiene dos elementos <T2> secundarios.

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>

Imagine ahora que la columna Name es de tipo text. La heurística del modo AUTO no compara los valores para este tipo. En su lugar, asume que los valores no son los mismos. Esto genera el siguiente XML:

<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>

Vea también

Referencia