Some problems when I tried it. For some reason I cannot duplicate this VB6 code:
Code:
strZIPHeader = Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String$(18, 0)
Below is my attempt. How could I pass a string with trailing empty characters?
Code:
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
DECLARE @return int
DECLARE @property int
EXEC @hr = sp_OACreate 'Scripting.FileSystemObject', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
PRINT @src
RETURN
END
EXEC @hr = sp_OAMethod @object, 'CreateTextFile', @property OUT, 'C:\PIS\Test.zip'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
print @src
print @desc
RETURN
END
DECLARE @xx nchar(22)
SET @xx = CHAR(80) + CHAR(75) + CHAR(5) + CHAR(6) + REPLICATE(CHAR(0),18)
PRINT len(@xx)
EXEC @hr = sp_OAMethod @property, 'Write', NULL, @xx
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @property, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
print @src
print @desc
RETURN
END
-- Destroy the object.
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
And this has been my attempt at instantiating the folder object but I am getting a type mismatch error on the sp_OAMethod. Since NameSpace seem to like variant (as seen
) I even tried declaring @xx as sql_variant to no avail.
Code:
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
DECLARE @return int
DECLARE @property int
EXEC @hr = sp_OACreate 'Shell.Application', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
PRINT @src
RETURN
END
-- Get a property by calling the method.
EXEC @hr = sp_OAMethod @object, 'NameSpace', @property OUT, 'C:\Test.zip'
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
print @src
print @desc
RETURN
END
Any help will be highly appreciated.