Sample code for 30+ languages & platforms
SQL Server

Demonstrate Binary Data Encoding Methods

Demonstrates binary data encoding methods.

Note: This example requires Chilkat v9.5.0.64 or later.

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
    DECLARE @iTmp0 int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @binData int
    EXEC @hr = sp_OACreate 'Chilkat.BinData', @binData OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Append 10 bytes: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09
    DECLARE @success int
    EXEC sp_OAMethod @binData, 'AppendEncoded', @success OUT, '00010203040506070809', 'hex'

    -- Show that binData contains 10 bytes.

    EXEC sp_OAGetProperty @binData, 'NumBytes', @iTmp0 OUT
    PRINT 'num bytes = ' + @iTmp0

    -- Get as base64

    EXEC sp_OAMethod @binData, 'GetEncoded', @sTmp0 OUT, 'base64'
    PRINT 'base64: ' + @sTmp0

    -- Get a chunk of the binary data.
    -- The 1st byte is at index 0.
    -- The output should be "02030405"
    DECLARE @offset int
    SELECT @offset = 2
    DECLARE @numBytes int
    SELECT @numBytes = 4

    EXEC sp_OAMethod @binData, 'GetEncodedChunk', @sTmp0 OUT, @offset, @numBytes, 'hex'
    PRINT 'chunk: ' + @sTmp0

    -- Copy the bytes to a StringBuilder using the base64url encoding
    DECLARE @sb int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT

    EXEC sp_OAMethod @binData, 'GetEncodedSb', @success OUT, 'base64url', @sb

    EXEC sp_OAMethod @sb, 'GetAsString', @sTmp0 OUT
    PRINT 'base64url: ' + @sTmp0

    -- Remove a chunk from the binary data
    SELECT @offset = 2
    SELECT @numBytes = 4
    EXEC sp_OAMethod @binData, 'RemoveChunk', @success OUT, @offset, @numBytes
    -- The bytes remaining are 00,01,06,07,08,and 09

    EXEC sp_OAMethod @binData, 'GetEncoded', @sTmp0 OUT, 'hex'
    PRINT 'after removing chunk: ' + @sTmp0

    EXEC @hr = sp_OADestroy @binData
    EXEC @hr = sp_OADestroy @sb


END
GO