Compartilhar via


Heurística de modo AUTO na formação do XML retornado

O modo AUTO determina a forma do XML retornado com base na consulta. Para determinar como os elementos devem ser aninhados, a heurística do modo AUTO compara valores da coluna em linhas adjacentes. São comparadas colunas de todos os tipos, menos ntext, text, imagee xml. São comparadas colunas do tipo (n)varchar(max) e varbinary(max).

O exemplo seguinte ilustra a heurística do modo AUTO que determina a forma do XML resultante:

SELECT T1.Id, T2.Id, T1.Name
FROM   T1, T2
WHERE ...
FOR XML AUTO
ORDER BY T1.Id

Para determinar onde um novo elemento <T1> começa, todos os valores de T1 da coluna, menos ntext, text, image e xml, serão comparados se a chave na tabela T1 não for especificada. Em seguida, assuma que a coluna Name é nvarchar(40) e a instrução SELECT retorna este conjunto de linhas:

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

A heurística do modo AUTO compara todos os valores da tabela T1 e as colunas Name e Id. Como as primeiras duas linhas têm os mesmos valores para as colunas Id e Name, um elemento <T1> que tem dois elementos filho <T2> é adicionado ao resultado.

O XML retornado é o seguinte:

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

Agora assuma que a coluna Name é de tipo text. A heurística de modo AUTO não compara valores desse tipo. Em vez disso, ela assume que os valores não são os mesmos. Isso resulta em geração de XML conforme mostrado a seguir:

<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 também

Referência