Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) File Read BlocksDemonstrates how to read a file in fixed-size blocks (except for the very last block).
-- 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) -- Demonstrates how to read a file in blocks, -- which can be useful when uploading to cloud storage -- services such as Azure, S3, Google, etc. -- For this example, we're simply writing the blocks -- to an output file, and then checking to see if the -- resulting file contents equals the original file contents. DECLARE @facSrc int -- Use "Chilkat_9_5_0.FileAccess" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.FileAccess', @facSrc OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @facDest int -- Use "Chilkat_9_5_0.FileAccess" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.FileAccess', @facDest OUT DECLARE @srcPath nvarchar(4000) SELECT @srcPath = 'qa_data/xml/hamlet.xml' DECLARE @destPath nvarchar(4000) SELECT @destPath = 'qa_output/hamletOut.xml' DECLARE @success int EXEC sp_OAMethod @facSrc, 'OpenForRead', @success OUT, @srcPath EXEC sp_OAMethod @facDest, 'OpenForWrite', @success OUT, @destPath -- Assuming success for the example.. -- How many 1024-byte blocks? (Including 1 for the last partial block) DECLARE @numBlocks int EXEC sp_OAMethod @facSrc, 'GetNumBlocks', @numBlocks OUT, 1024 DECLARE @i int SELECT @i = 0 WHILE (@i < @numBlocks) BEGIN EXEC sp_OAMethod @facSrc, 'ReadBlock', @dataBlock OUT, @i, 1024 EXEC sp_OAGetProperty @facSrc, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 <> 1 BEGIN EXEC sp_OAGetProperty @facSrc, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @facSrc EXEC @hr = sp_OADestroy @facDest RETURN END EXEC sp_OAMethod @facDest, 'FileWrite', @success OUT, @dataBlock IF @success <> 1 BEGIN EXEC sp_OAGetProperty @facDest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @facSrc EXEC @hr = sp_OADestroy @facDest RETURN END SELECT @i = @i + 1 END EXEC sp_OAMethod @facSrc, 'FileClose', NULL EXEC sp_OAMethod @facDest, 'FileClose', NULL DECLARE @bEqual int EXEC sp_OAMethod @facSrc, 'FileContentsEqual', @bEqual OUT, @srcPath, @destPath IF @bEqual <> 1 BEGIN PRINT 'Something went wrong!' EXEC @hr = sp_OADestroy @facSrc EXEC @hr = sp_OADestroy @facDest RETURN END PRINT 'File successfully copied by blocks.' EXEC @hr = sp_OADestroy @facSrc EXEC @hr = sp_OADestroy @facDest END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.