saving the FOR XML AUTO results to variable in SQL saving the FOR XML AUTO results to variable in SQL xml xml

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