Partilhar via


Heurísticas de modo AUTO na modelação do XML devolvido

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

O modo AUTO determina a forma do XML devolvido com base na consulta. Ao determinar como os elementos devem ser aninhados, as heurísticas em modo AUTO comparam os valores das colunas em linhas adjacentes. Colunas de todos os tipos, exceto ntext, texto, imagem e xml, são comparadas. Colunas do tipo (n)varchar(max) e varbinary(max ) são comparadas.

O exemplo seguinte ilustra as heurísticas do modo AUTO que determinam a forma do 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 onde começa um novo <T1> elemento, todos os valores das colunas de T1, exceto ntext, text, image e xml, são comparados se a chave na tabela T1 não for especificada. De seguida, assuma que a coluna Nome é nvarchar(40) e que a instrução SELECT devolve este conjunto de linhas:

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

As heurísticas do modo AUTO comparam todos os valores das colunas da tabela T1, do ID e do Nome. As duas primeiras linhas têm os mesmos valores para as Id colunas e Name . Como resultado, um único <T1> elemento, tendo dois <T2> elementos filhos, é adicionado ao resultado.

Segue-se o XML que é devolvido:

<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 Name coluna é do tipo texto . As heurísticas do modo AUTO não comparam os valores deste tipo. Em vez disso, assume que os valores não são os mesmos. Este modo resulta na geração de XML, conforme mostrado no seguinte resultado:

<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