T-SQL - экспорт файла изображения выполняется без ошибок.Но также нет выхода - PullRequest
0 голосов
/ 16 мая 2019

У меня есть сценарий TSQL, который выглядит так, как будто он должен извлекать данные изображения из таблицы и затем экспортировать их в папки под начальной папкой, объявленной в начале сценария.Там нет ошибок, и скрипт выглядит так, как будто он должен работать.Я подозреваю незначительную ошибку, которую я просто не замечаю, но любые идеи приветствуются

--Declares

DECLARE @ImageData VARBINARY (max);

DECLARE @Path2OutFile NVARCHAR (2000);

DECLARE @Obj INT;

DECLARE @ImageFolderPath NVARCHAR(1000);

DECLARE @ImageFilename NVARCHAR(1000);

SET @ImageFolderPath = '\\Test01\Export';

Declare @ImageFolder NVARCHAR(1000);

SET @ImageFolder = '';
Declare @TestOutFolder as NVARCHAR(1000);
Declare @Folder_Exists as INTl
Declare @file_results table
    (file_exists int,
    file_is_a_directory int,
    parent_directory_exists int
    );

SET NOCOUNT ON

   DECLARE db_cursor CURSOR FOR 
   SELECT ProductImageFile, ProductImageFolder,convert(varbinary(max),ImageData,1)
   from TempT2

   OPEN db_cursor 
   FETCH NEXT FROM db_cursor 
   INTO @ImageFilename, @ImageFolder, @ImageData

   WHILE @@FETCH_STATUS = 0  
   BEGIN  

      --Test if folder exists
      set @TestOutFolder =   CONCAT (@ImageFolderPath,'\', @ImageFolder);

      insert into @file_results
            (file_exists, file_is_a_directory, parent_directory_exists)
            exec master.dbo.xp_fileexist @TestOutFolder

        select @Folder_Exists = file_is_a_directory
        from @file_results 

        if @Folder_Exists = 0   --Folder does not exist. Create new folder and output to it. Otherwise skip
            Begin
                --If Exists Output  
                SET @Path2OutFile = CONCAT (
                    @ImageFolderPath
                        ,'\'
                        , @ImageFolder
                        ,'\'
                        , @ImageFilename
                    +'.Jpeg'
                        );

                BEGIN TRY
                    EXEC sp_OACreate 'ADODB.Stream' ,@Obj OUTPUT;
                    EXEC sp_OASetProperty @Obj ,'Type',1;
                    EXEC sp_OAMethod @Obj,'Open';
                    EXEC sp_OAMethod @Obj,'CreateFolder',@TestOutFolder, OUT, @TestOutFolder;
                    EXEC sp_OAMethod @Obj,'Write', NULL, @ImageData;
                    EXEC sp_OAMethod @Obj,'SaveToFile', NULL, @Path2OutFile, 2;
                    EXEC sp_OAMethod @Obj,'Close';
                    EXEC sp_OADestroy @Obj;
                END TRY

                BEGIN CATCH
                    EXEC sp_OADestroy @Obj;
                END CATCH
            End

        --Clean Up Table Folder for next iteration
        DELETE from @file_results

        --Fetch Next Data From Cursor
        FETCH NEXT FROM db_cursor 
        INTO @ImageFilename, @ImageFolder, @ImageData
      END 

CLOSE db_cursor 
DEALLOCATE db_cursor

Нет сообщений об ошибках.
Запуск отладки извлекает данные и проходит все необходимые шаги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...