saving the FOR XML AUTO results to variable in SQL
For example
DECLARE @xml_var XML SET @xml_var = ( SELECT *, ( SELECT * FROM Orders WHERE Orders.CustomerID=Customers.CustomerID FOR XML AUTO, TYPE ) FROM Customers WHERE CustomerID='ALFKI' FOR XML AUTO, TYPE)
refer to :http://blogs.msdn.com/sqlprogrammability/articles/576095.aspx
DECLARE @RESULTS XMLSET @RESULTS = (SELECT * FROM Table_Name FOR XML AUTO)SELECT @RESULTS
For those using SQL SERVER 2000, FOR XML is next to useless; You cannot assign the generated XML into a variable, insert into a table, etc. I had to do it manually when required, here's my sample:
SET NOCOUNT ONcreate table #parcelData ( parcelID int , [description] varchar(20))--insert sample datainsert into #parcelDataselect 1, 'apples' UNIONselect 3, 'oranges' UNIONselect 25, 'bananas' UNIONselect 69, 'maracuja'print '-- Example 1: FOR XML RAW --'select parcelID as pIDfrom #parcelDataORDER BY parcelIDFOR XML RAW--> <row pID="17"/><row pID="25"/><row pID="26"/><row pID="333"/>print '-- Example 2: Build XML Manually --'declare @parcelRow varchar(50), @dummy int , @xmlRowStr varchar(8000)set @xmlRowStr = '' -- initialize.DECLARE parcel_cursor CURSOR FOR select DISTINCT '<row pID="' + cast(parcelID as varchar(10)) + '"/>', parcelID as parcelRow from #parcelData ORDER BY parcelIDOPEN parcel_cursorFETCH NEXT FROM parcel_cursorINTO @parcelRow, @dummyWHILE @@FETCH_STATUS = 0 BEGIN -- build the xml row by row. set @xmlRowStr = @xmlRowStr + @parcelRow -- Get next row FETCH NEXT FROM parcel_cursor INTO @parcelRow, @dummyENDCLOSE parcel_cursorDEALLOCATE parcel_cursor--print @xmlRowStr -- wrap a root element around if @xmlRowStr != '' begin set @xmlRowStr = '<ROOT>' + @xmlRowStr + '</ROOT>'endselect @xmlRowStr as XmlOutDROP TABLE #parcelData SET NOCOUNT OFF