Approccio euristico della modalità AUTO per la determinazione della struttura dei valori XML restituitiAUTO Mode Heuristics in Shaping Returned XML

La modalità AUTO determina la struttura del valore XML restituito in base alla query.AUTO mode determines the shape of returned XML based on the query. Per determinare come devono essere nidificati gli elementi, la modalità AUTO, che utilizza un approccio euristico, confronta i valori delle colonne nelle righe adiacenti.In determining how elements are to be nested, AUTO mode heuristics compare column values in adjacent rows. Vengono confrontate colonne di tutti i tipi, ad eccezione di ntext, text, imagee xml.Columns of all types, except ntext, text, image, and xml, are compared. Vengono confrontate le colonne di tipo (n)varchar(max) e varbinary(max) .Columns of type (n)varchar(max) and varbinary(max) are compared.

Nell'esempio seguente viene illustrato l'approccio euristico utilizzato dalla modalità AUTO per determinare la struttura del valore XML risultante:The following example illustrates the AUTO mode heuristics that determine the shape of the resulting XML:

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

Per determinare la posizione iniziale dell'elemento <T1>, se non è specificata la chiave della tabella T1 vengono confrontati tutti i valori di colonna di T1, ad eccezione di quelli di tipo ntext, text, image e xml.To determine where a new <T1> element starts, all column values of T1, except ntext, text, image and xml, are compared if the key on the table T1 is not specified. Supporre quindi che la colonna Name sia di tipo nvarchar(40) e che l'istruzione SELECT restituisca il set di righe seguente:Next, assume that the Name column is nvarchar(40) and the SELECT statement returns this rowset:

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

Utilizzando un approccio euristico, la modalità AUTO confronta tutti i valori della tabella T1, ovvero le colonne Id e Name.The AUTO mode heuristics compare all the values of table T1, the Id and Name columns. Le prime due righe contengono gli stessi valori nelle colonne Id e Name, quindi al risultato viene aggiunto un elemento <T1> con due elementi figlio <T2>.Because the first two rows have the same values for the Id and Name columns, one <T1> element having two <T2> child elements is added in the result.

Il valore XML restituito è il seguente:Following is the XML that is returned:

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

Si supponga ora che la colonna Name sia di tipo text .Now assume that the Name column is of text type. A causa dell'approccio euristico, la modalità AUTO non confronta valori di questo tipo,The AUTO mode heuristics do not compare the values for this type. ma presuppone che siano diversi.Instead, it assumes that the values are not the same. Viene pertanto generato il valore XML illustrato di seguito:This results in XML generation as shown in the following:

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

Vedere ancheSee Also

Utilizzo della modalità AUTO con FOR XMLUse AUTO Mode with FOR XML