<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Sql Server Blog di Francesco Diaz : Xml</title><link>http://blogs.technet.com/francesco_diaz/archive/tags/Xml/default.aspx</link><description>Tags: Xml</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>XQuery e SQL 2008 - la clausola LET</title><link>http://blogs.technet.com/francesco_diaz/archive/2008/06/18/xquery-e-sql-2008-la-clausola-let.aspx</link><pubDate>Wed, 18 Jun 2008 14:59:19 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3073429</guid><dc:creator>Francesco Diaz</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/francesco_diaz/comments/3073429.aspx</comments><wfw:commentRss>http://blogs.technet.com/francesco_diaz/commentrss.aspx?PostID=3073429</wfw:commentRss><description>&lt;p&gt;Con Sql Server 2005 è stato introdotto il tipo di dati &lt;strong&gt;xml. &lt;/strong&gt;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 &lt;strong&gt;for&lt;/strong&gt;, &lt;strong&gt;where&lt;/strong&gt;, &lt;strong&gt;order by&lt;/strong&gt; e &lt;strong&gt;return&lt;/strong&gt; delle cosiddette espressioni &lt;a href="http://technet.microsoft.com/it-it/library/ms190945.aspx" target="_blank"&gt;FLWOR&lt;/a&gt;, &lt;/p&gt; &lt;p&gt;Sql Server 2008 supporta anche&amp;nbsp; la clausola &lt;strong&gt;let&lt;/strong&gt;, che permette di assegnare un valore ad una variabile all'interno di una espressione XQuery. Ecco un esempio : &lt;/p&gt; &lt;p&gt;&lt;font color="#008000"&gt;-- dichiarazione e valorizzazione della variabile&lt;/font&gt;&lt;br&gt;&lt;font color="#0000ff"&gt;declare&lt;/font&gt; @x &lt;font color="#0000ff"&gt;xml&lt;br&gt;set&lt;/font&gt; @x=&lt;br&gt;&lt;font color="#ff0000"&gt;'&amp;lt;Fatture&amp;gt;&lt;br&gt;&amp;lt;Fattura&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Cliente&amp;gt;Mario Rossi&amp;lt;/Cliente&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Prodotti&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Prodotto IDProdotto="2" Prezzo="1.99" Quantita="1" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Prodotto IDProdotto="3" Prezzo="2.99" Quantita="2" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Prodotto IDProdotto="5" Prezzo="1.99" Quantita="1" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Prodotti&amp;gt;&lt;br&gt;&amp;lt;/Fattura&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Fattura&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Cliente&amp;gt;Andrea Bianchi&amp;lt;/Cliente&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Prodotti&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Prodotto IDProdotto="2" Prezzo="1.99" Quantita="1"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Prodotti&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Fattura&amp;gt;&lt;br&gt;&amp;lt;/Fatture&amp;gt;' &lt;/font&gt; &lt;p&gt;&lt;font color="#008000"&gt;--XQuery&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; @x.query(&lt;br&gt;&lt;font color="#ff0000"&gt;'&amp;lt;Ordini&amp;gt;&lt;br&gt;{&lt;br&gt;for $Fattura in /Fatture/Fattura&lt;br&gt;&lt;strong&gt;let&lt;/strong&gt; $count :=count($Fattura/Prodotti/Prodotto) &lt;br&gt;order by $count&lt;br&gt;return&lt;br&gt;&amp;lt;Ordine&amp;gt;&lt;br&gt;{$Fattura/Cliente}&lt;br&gt;&amp;lt;Conteggio&amp;gt;{$count}&amp;lt;/Conteggio&amp;gt;&lt;br&gt;&amp;lt;/Ordine&amp;gt;&lt;br&gt;}&lt;br&gt;&amp;lt;/Ordini&amp;gt;'&lt;/font&gt;)&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;font color="#008000"&gt;--output della query&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Ordini&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Ordine&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Cliente&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;Andrea Bianchi&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Cliente&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt; &amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Conteggio&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;1&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Conteggio&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Ordine&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Ordine&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Cliente&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;Mario Rossi&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Cliente&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ff0000"&gt;Conteggio&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;3&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Conteggio&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;nbsp; &lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Ordine&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;br&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ff0000"&gt;Ordini&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3073429" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/francesco_diaz/archive/tags/T-SQL/default.aspx">T-SQL</category><category domain="http://blogs.technet.com/francesco_diaz/archive/tags/Sql+Server+2008/default.aspx">Sql Server 2008</category><category domain="http://blogs.technet.com/francesco_diaz/archive/tags/Xml/default.aspx">Xml</category></item></channel></rss>