SQL Server
SQL Server
XML Sort Records by Content
See more XML Examples
Demonstrates the SortRecordsByContent method.The input XML, available at http://www.chilkatsoft.com/data/fruitRecordsSort.xml, is this:
<root>
<fruits>
<fruit>
<name>apple</name>
<color>red</color>
</fruit>
<fruit>
<name>banana</name>
<color>yellow</color>
</fruit>
<fruit>
<name>blackberry</name>
<color>purple</color>
</fruit>
<fruit>
<name>blueberry</name>
<color>blue</color>
</fruit>
<fruit>
<name>orange</name>
<color>orange</color>
</fruit>
<fruit>
<name>pear</name>
<color>green</color>
</fruit>
</fruits>
</root>
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
DECLARE @xml int
EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
DECLARE @xSortRoot int
-- The sample input XML is available at http://www.chilkatsoft.com/data/fruitRecordsSort.xml
EXEC sp_OAMethod @xml, 'LoadXmlFile', @success OUT, 'fruitRecordsSort.xml'
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @xml, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @xml
RETURN
END
-- The "fruit" records are direct children of the "fruits" node.
-- Therefore, to sort the fruit records, the SortRecordsByContent
-- method must be called from the "fruits" node.
EXEC sp_OAMethod @xml, 'FindChild', @xSortRoot OUT, 'fruits'
-- Sort by the "name" field in ascending order.
DECLARE @bAscending int
SELECT @bAscending = 1
EXEC sp_OAMethod @xSortRoot, 'SortRecordsByContent', NULL, 'name', @bAscending
-- Show the result:
EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
-- <root>
-- <fruits>
-- <fruit>
-- <name>apple</name>
-- <color>red</color>
-- </fruit>
-- <fruit>
-- <name>banana</name>
-- <color>yellow</color>
-- </fruit>
-- <fruit>
-- <name>blackberry</name>
-- <color>purple</color>
-- </fruit>
-- <fruit>
-- <name>blueberry</name>
-- <color>blue</color>
-- </fruit>
-- <fruit>
-- <name>orange</name>
-- <color>orange</color>
-- </fruit>
-- <fruit>
-- <name>pear</name>
-- <color>green</color>
-- </fruit>
-- </fruits>
-- </root>
EXEC @hr = sp_OADestroy @xSortRoot
EXEC @hr = sp_OADestroy @xml
END
GO