uso de la sentencia for xml
TRANSCRIPT
Julián Castiblanco P.http://julycastiblanco.blogspot.com/
MCT-MCSA-MCITP-MCTS SQL Server 2008/2005
Líder ITPros-DC
Querying Microsoft SQL Server 2012Exam 70-461Capítulo 6 – XML
Material de trabajo
Windows Server 2012 trialhttp://www.microsoft.com/en-us/download/details.aspx?id=11093
SQL Server 2012 with SP1 trialhttp://www.microsoft.com/en-us/download/details.aspx?id=29066
AdventureWorks for SQL Server 2012http://msftdbprodsamples.codeplex.com/releases/view/55330
Training kit SQL Server Querying Microsoft SQL Server 2012 – exam 70-461http://www.amazon.com/Training-Kit-Exam-70-461-Microsoft/dp/0735666059/ref=sr_1_1?ie=UTF8&qid=1359206206&sr=8-1&keywords=querying+microsoft+sql+server+2012+training+kit+exam+70-461
• Recuperación de XML mediante FOR XML
• Fragmentación de XML mediante OPENXML
• Uso del tipo de datos xml
Agenda
• Devuelve XML en lugar de filas y columnas
• Se puede configurar para que devuelva atributos, elementos y esquema
• Beneficia a las aplicaciones cliente que funcionan con XML
Cláusula FOR XML
FOR XML RAW
SELECT b.NameTerritorio, C.City, COUNT(*) ASnumordersFROM sales.SalesOrderHeader AS AINNER JOIN SALES.SalesTerritory AS BON A.TerritoryID=b.TerritoryIDINNER JOIN [Person].[Address] AS CON A.ShipToAddressID=C.AddressIDINNER JOIN [Person].[StateProvince] AS DON C.StateProvinceID=D.StateProvinceIDWHERE b.Name='France'GROUP BY b.Name, C.CityFOR XML RAW
FOR XML AUTO
SELECT b.NameTerritorio, C.City, COUNT(*) ASnumordersFROM sales.SalesOrderHeader AS AINNER JOIN SALES.SalesTerritory AS BON A.TerritoryID=b.TerritoryIDINNER JOIN [Person].[Address] AS CON A.ShipToAddressID=C.AddressIDINNER JOIN [Person].[StateProvince] AS DON C.StateProvinceID=D.StateProvinceIDWHERE b.Name='France'GROUP BY b.Name, C.CityFOR XML AUTO
FOR XML EXPLICIT
SELECT top 10 1 AS Tag,NULL AS Parent,SalesOrderID AS[Invoice!1!InvoiceNo!Element],OrderDate AS [Invoice!1!Date!Element]FROMSales.SalesOrderheaderFOR XML EXPLICIT
FOR XML PATH
------------------------------------FOR XML PATH----------------------------------
SELECT vC.BusinessEntityID"@customerID",sc.AccountNumber "@accountNumber",FirstName "Customer/FirstName",LastName "Customer/Lastname"
FROMSALES.vIndividualCustomer asvC INNER JOIN Sales.Customer as scON vC.BusinessEntityID=sc.PersonIDFOR XML PATH
FUNCIONES ADICIONALES
ELEMENT Cambia atributos por Elementos
ROOTColoca un elemento Raiz
TYPEInforma al motor que la información generada es de tipo XML
ABSENT|XSINIL Decidir si se mostraran valores
en nulo