XQuery e SQL 2008 – la clausola LET


Con Sql Server 2005 è stato introdotto il tipo di dati xml. Uno dei metodi per fare query all’interno di un documento xml è usare un sottoinsieme delle possibilità offerte da XQuery tramite il linguaggio T-SQL. Oltre alle clausole for, where, order by e return delle cosiddette espressioni FLWOR,

Sql Server 2008 supporta anche  la clausola let, che permette di assegnare un valore ad una variabile all’interno di una espressione XQuery. Ecco un esempio :

— dichiarazione e valorizzazione della variabile
declare @x xml
set
@x=
‘<Fatture>
<Fattura>
        <Cliente>Mario Rossi</Cliente>
        <Prodotti>
            <Prodotto IDProdotto=”2″ Prezzo=”1.99″ Quantita=”1″ />
            <Prodotto IDProdotto=”3″ Prezzo=”2.99″ Quantita=”2″ />
            <Prodotto IDProdotto=”5″ Prezzo=”1.99″ Quantita=”1″ />
        </Prodotti>
</Fattura>
    <Fattura>
        <Cliente>Andrea Bianchi</Cliente>
        <Prodotti>
            <Prodotto IDProdotto=”2″ Prezzo=”1.99″ Quantita=”1″/>
        </Prodotti>
    </Fattura>
</Fatture>’

–XQuery

SELECT @x.query(
‘<Ordini>
{
for $Fattura in /Fatture/Fattura
let $count :=count($Fattura/Prodotti/Prodotto)
order by $count
return
<Ordine>
{$Fattura/Cliente}
<Conteggio>{$count}</Conteggio>
</Ordine>
}
</Ordini>’
)

 

–output della query

<Ordini>
  <Ordine>
    <Cliente>Andrea Bianchi</Cliente>
   <Conteggio>1</Conteggio>
  </Ordine>
  <Ordine>
    <Cliente>Mario Rossi</Cliente>
    <Conteggio>3</Conteggio>
  </Ordine>
</
Ordini>

Comments (0)