SQL Server
SQL Server
XML NewChildAfter
Demonstrates the Chilkat.NewChildAfter method.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
EXEC sp_OASetProperty @xml, 'Tag', 'order'
EXEC sp_OAMethod @xml, 'NewChild2', NULL, 'order_billing_info|price_list', 'Listino Italia'
EXEC sp_OAMethod @xml, 'NewChild2', NULL, 'order_billing_info|price_list_id', '1'
EXEC sp_OAMethod @xml, 'NewChild2', NULL, 'order_billing_info|first_name', 'Francesco'
EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
-- We now have the following XML:
-- <?xml version="1.0" encoding="utf-8"?>
-- <order>
-- <order_billing_info>
-- <price_list>Listino Italia</price_list>
-- <price_list_id>1</price_list_id>
-- <first_name>Francesco</first_name>
-- </order_billing_info>
-- </order>
-- Get the "order_billing_info" element
DECLARE @orderBillingInfo int
EXEC sp_OAMethod @xml, 'FindChild', @orderBillingInfo OUT, 'order_billing_info'
-- Call NewChildAfter to add an XML element <customer_id> after <price_list_id>
-- First get the index of the element price_list_id
DECLARE @index int
EXEC sp_OAMethod @orderBillingInfo, 'TagIndex', @index OUT, 'price_list_id'
PRINT 'index = ' + @index
-- Add the "customer_id" element just after specified index.
DECLARE @xCustId int
EXEC sp_OAMethod @orderBillingInfo, 'NewChildAfter', @xCustId OUT, @index, 'customer_id', '1234'
EXEC @hr = sp_OADestroy @xCustId
EXEC @hr = sp_OADestroy @orderBillingInfo
EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
-- We now have:
-- <?xml version="1.0" encoding="utf-8"?>
-- <order>
-- <order_billing_info>
-- <price_list>Listino Italia</price_list>
-- <price_list_id>1</price_list_id>
-- <customer_id>1234</customer_id>
-- <first_name>Francesco</first_name>
-- </order_billing_info>
-- </order>
EXEC @hr = sp_OADestroy @xml
END
GO