3

データベースに多数の pdf ファイルがあり、それらを優先度に基づいてフォルダーに保存したいと考えています。以下のコードを使用すると、すべてのファイルを保存できません。1 つのファイルを保存するだけです。:(

Declare 
            @File_Path_1 VARBINARY(MAX),
            @FileName_1 VARCHAR(MAX),
            @Timestamp_1 varchar(max),
            @objectToken_1 int

DECLARE cFiles CURSOR FAST_FORWARD FOR
SELECT request_number from data where priority=1
OPEN cFiles

FETCH NEXT FROM cFiles INTO @FileName_1

WHILE @@FETCH_STATUS = 0 BEGIN
   SET @FileName_1 = @FileName_1
    set @Timestamp_1='c:\Dump\1.pdf'
    EXEC sp_oacreate 'ADODB.Stream', @ObjectToken_1 OUTPUT
    EXEC sp_oasetproperty @objecttoken_1, 'type', 1
    EXEC sp_oamethod @objecttoken_1,'open'
    EXEC sp_oamethod @objecttoken_1,'Write',Null,@File_Path_1
    EXEC sp_oamethod @objecttoken_1,'Savetofile',Null,@Timestamp_1,2
    EXEC sp_oamethod @objecttoken_1,'Close'
    EXEC sp_oamethod @objecttoken_1,'open'

    FETCH NEXT FROM cFiles INTO @FileName_1
END

CLOSE cFiles
DEALLOCATE cFiles

上記のコードは 1 つのレコードだけを取得します。どなたか助けてください。

4

2 に答える 2

0

主な問題は、ファイル名を動的に作成していないことです:

set @Timestamp_1='c:\Dump\1.pdf'

次のようにする必要があります。

set @Timestamp_1='c:\Dump\' + CONVERT(VARCHAR(50), @FileName_1) + '.pdf'

また、ソース データを書き出すようには見えません。@File_Path_1 は決して設定されません。フィールドを SELECT リストに追加し、@File_Path_1 変数を FETCH ステートメントに追加する必要があります。

また、この行は何もしません:

SET @FileName_1 = @FileName_1

于 2013-08-05T15:52:56.060 に答える
0
DECLARE @SOURCEPATH VARBINARY(MAX),
@DESTPATH VARCHAR(MAX),
@ObjectToken INT,
@Request_Number varchar(30)

DECLARE PDFPATH CURSOR FAST_FORWARD FOR
SELECT ID from Table 
OPEN PDFPATH
FETCH NEXT FROM PDFPATH INTO @SOURCEPATH, @Request_Number 

WHILE @@FETCH_STATUS = 0
BEGIN

SET @DESTPATH = 'C:\path' + CAST(@Request_Number AS varchar) + '.pdf'
EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @SOURCEPATH
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @DESTPATH, 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken

FETCH NEXT FROM PDFPATH INTO @SOURCEPATH, @Request_Number
END

このスニペットが困っている人に役立つことを願っています:)助けてくれてありがとう:)

于 2013-07-25T14:58:09.393 に答える