Sample code for 30+ languages & platforms
SQL Server

Benefit of XML Methods Having Names Ending in "2"

See more XML Examples

The Chilkat XML methods having names ending with "2" update the internal reference rather than return a new XML object instance. See the example below..

Note: There are a few methods, such as LoadXml2, where the "2" simply indicates the method is the same but has an additional argument. (There are some programming environments where overloading methods is not allowed. Therefore, Chilkat will avoid providing methods having the same name but with different arguments.)

Chilkat SQL Server Downloads

SQL Server
-- 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 @x nvarchar(4000)
    SELECT @x = '<test><abc><xyz>123</xyz></abc></test>'

    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_OAMethod @xml, 'LoadXml', @success OUT, @x

    -- First demonstrate getting "123" in the simplest way:
    EXEC sp_OAMethod @xml, 'ChilkatPath', @sTmp0 OUT, 'abc|xyz|*'
    PRINT @sTmp0

    -- Now demonstrate navigating to the "xyz" node using non-"2" methods.
    -- The following few lines of code create two object instances, which will need
    -- to be deleted or garbage collected.
    DECLARE @xAbc int
    EXEC sp_OAMethod @xml, 'FindChild', @xAbc OUT, 'abc'
    DECLARE @xXyz int
    EXEC sp_OAMethod @xAbc, 'FindChild', @xXyz OUT, 'xyz'
    EXEC sp_OAGetProperty @xXyz, 'Content', @sTmp0 OUT
    PRINT @sTmp0
    EXEC @hr = sp_OADestroy @xXyz

    EXEC @hr = sp_OADestroy @xAbc

    -- Now demonstrate navigating to the "xyz" node using the "2" methods.
    -- No object instances are created.
    EXEC sp_OAMethod @xml, 'FindChild2', @success OUT, 'abc'
    EXEC sp_OAMethod @xml, 'FindChild2', @success OUT, 'xyz'
    EXEC sp_OAGetProperty @xml, 'Content', @sTmp0 OUT
    PRINT @sTmp0
    -- Restore xml back to the root of the document.
    EXEC sp_OAMethod @xml, 'GetRoot2', NULL

    EXEC @hr = sp_OADestroy @xml


END
GO