Heuristiques en mode AUTO dans la mise en forme du XML retourné

S’APPLIQUE À : SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)

Le mode AUTO détermine la forme des données XML renvoyées en fonction de la requête. Lors de la définition de l'imbrication des éléments, l'heuristique du mode AUTO compare les valeurs de colonnes de lignes adjacentes. Les colonnes de tous les types, sauf ntext, text, imageet xml, sont comparées. Les colonnes de type (n)varchar(max) et varbinary(max) sont comparées.

L'exemple suivant illustre l'heuristique du mode AUTO qui détermine la forme des données XML obtenues :

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

Pour déterminer où commence un nouvel <T1> élément, toutes les valeurs de colonne de T1, sauf ntext, texte, image et xml, sont comparées si la clé du tableau T1 n’est pas spécifiée. Ensuite, supposons que la colonne Name soit de type nvarchar(40) et que l’instruction SELECT renvoie l’ensemble de lignes suivant :

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

L’heuristique du mode AUTO compare toutes les valeurs de la table T1, les colonnes Id et Name. Les deux premières lignes ont les mêmes valeurs pour les colonnes et Name les Id colonnes. Par conséquent, un seul <T1> élément, ayant deux <T2> éléments enfants, est ajouté au résultat.

Voici le document XML renvoyé :

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

Supposons maintenant que la Name colonne soit de type texte . Les heuristiques en mode AUTO ne comparent pas les valeurs de ce type. Au lieu de cela, il suppose que les valeurs ne sont pas identiques. Ce mode aboutit à la génération de données XML suivante :

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

Voir aussi