Файл перезаписи PL/SQL новой информацией без добавления

Я создаю PDF на своей FTP-папке, чтобы отправить его через Daemon, файл в порядке, но каждый раз, когда я помещаю его туда снова, к этому файлу добавляется информация, PDF, естественно, только читает инструкцию LAST, но для создания чистый файл мне нужно каждый раз создавать пустой PDF.

  1. Создать PDF
  2. Напишите информацию (UTL_FILE.PUT_LINE)
  3. Закрыть файл

но если мне нужно создать другой файл с тем же слоем, но с новой информацией, мой процесс создает файл с некоторым именем, и это находит старое и ПРИЛОЖИТ информацию.

Мне нужно очистить этот файл и добавить новую информацию, что мне делать, чтобы избежать добавления этой информации?

CODE: (это библиотека PL_FPDF, модифицированная для записи файлов в каталог)

--some code!
elsif (myDest = 'F') then
    -- DFVD -- Enviar a directorio
    -- Content Restriction
    v_len := 1;

    for i in pdfDoc.first..pdfDoc.last loop
        v_clob := to_clob(pdfDoc(i));
        if v_clob is not null then
            v_in := 1;
            v_out := 1;
            v_lang := 0;
            v_warning := 0;
            v_len := dbms_lob.getlength(v_clob);

            dbms_lob.convertToBlob(v_blob, v_clob, v_len, v_in, v_out, dbms_lob.default_csid, v_lang, v_warning);


            dbms_lob.append(v_doc, dbms_lob.substr(v_blob, v_len));   
        end if;
    end loop;

    l_blob_len := DBMS_LOB.getlength(v_doc);
    l_file := UTL_FILE.fopen('FTP_DIR',myName,'w', 32767);

    WHILE l_pos < l_blob_len LOOP
        DBMS_LOB.read(v_doc, l_amount, l_pos, l_buffer);
        UTL_FILE.put_raw(l_file, l_buffer, TRUE);
        l_pos := l_pos + l_amount;
    END LOOP;

    UTL_FILE.fclose(l_file);
else
--some code!

Внутренний код PDF выглядит так:

%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Length 2401>>
stream
2 J
0.56 w
BT /F1 12.0 Tf ET
BT /F2 20.0 Tf ET
0.0 0.4 0.8 rg
28.35 813.54 538.57 -28.34 re f 28.35 813.54 m 28.35 785.19 l S 28.35 813.54 m 566.92 813.54 l S 566.92 813.54 m 566.92 785.19 l S 28.35 785.19 m 566.92 785.19 l S q 1.0 1.0 1.0 rg BT 190.95 793.36 Td (Informe Liquidaciones) Tj ET Q
BT /F2 9.0 Tf ET
q 0.0 g BT 31.18 768.32 Td (Fecha: 17-02-2016) Tj ET Q
28.35 728.50 m 28.35 700.15 l S 28.35 728.50 m 170.08 728.50 l S 28.35 700.15 m 170.08 700.15 l S q 0.0 g BT 115.74 711.62 Td (Devolucion:) Tj ET Q
170.08 728.50 m 566.92 728.50 l S 566.92 728.50 m 566.92 700.15 l S 170.08 700.15 m 566.92 700.15 l S 
28.35 697.31 m 28.35 668.97 l S 28.35 697.31 m 396.85 697.31 l S q 0.0 g BT 304.99 680.44 Td (Cantidad de Primas  ) Tj ET Q
396.85 697.31 m 566.92 697.31 l S 566.92 697.31 m 566.92 668.97 l S q 0.0 g BT 399.68 680.44 Td (  Monto Recaudado) Tj ET Q
28.35 668.97 m 28.35 640.62 l S q 0.0 g BT 31.18 652.09 Td (  Recaudado Tarjeta Ripley) Tj ET Q
q 0.0 g BT 389.01 652.09 Td (  ) Tj ET Q
566.92 668.97 m 566.92 640.62 l S q 0.0 g BT 399.68 652.09 Td (  ) Tj ET Q
28.35 640.62 m 28.35 612.28 l S q 0.0 g BT 31.18 623.75 Td (  Recaudado OMP) Tj ET Q
q 0.0 g BT 389.01 623.75 Td (  ) Tj ET Q
566.92 640.62 m 566.92 612.28 l S q 0.0 g BT 399.68 623.75 Td (  ) Tj ET Q
28.35 612.28 m 28.35 583.93 l S 28.35 583.93 m 396.85 583.93 l S q 0.0 g BT 31.18 595.40 Td (  Devoluciones no Pago Mes Anterior:) Tj ET Q
566.92 612.28 m 566.92 583.93 l S 396.85 583.93 m 566.92 583.93 l S q 0.0 g BT 399.68 595.40 Td (  ) Tj ET Q
28.35 578.26 m 28.35 549.91 l S 28.35 578.26 m 396.85 578.26 l S 28.35 549.91 m 396.85 549.91 l S q 0.0 g BT 313.50 561.39 Td (Total Recaudado:  ) Tj ET Q
396.85 578.26 m 566.92 578.26 l S 566.92 578.26 m 566.92 549.91 l S 396.85 549.91 m 566.92 549.91 l S q 0.0 g BT 399.68 561.39 Td (  ) Tj ET Q
BT /F1 8.0 Tf ET
q 0.0 g BT 31.18 526.25 Td (Comentarios) Tj ET Q
BT /F1 9.0 Tf ET
28.35 521.57 m 28.35 408.18 l S 28.35 521.57 m 566.92 521.57 l S 566.92 521.57 m 566.92 408.18 l S 28.35 408.18 m 566.92 408.18 l S 
BT /F2 9.0 Tf ET
q 0.0 g BT 67.93 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 252.18 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 429.34 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 86.46 185.80 Td (some guy) Tj ET Q
q 0.0 g BT 260.96 185.80 Td (some guy) Tj ET Q
q 0.0 g BT 447.62 185.80 Td (some guy) Tj ET Q

endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
6 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
>>
/XObject <<
>>
>>
endobj
7 0 obj
<<
/Producer (PL_FPDF 0.9.3 portage pour Laclasse.com par P.G. Levallois de la version 1.53 de PHP/FPDF d'Olivier Plathey.)
/Title (Informe Liquidaciones a Companias)
/Author ()
/Creator ()
/CreationDate (D:20160217160717)
>>
endobj
8 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 9
0000000000 65535 f 
0000002538 00000 n 
0000002822 00000 n 
0000000009 00000 n 
0000000087 00000 n 
0000002625 00000 n 
0000002721 00000 n 
0000002936 00000 n 
0000003189 00000 n 
trailer
<<
/Size 9
/Root 8 0 R
/Info 7 0 R
>>
startxref
3292
%%EOF
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Length 2401>>
stream
2 J
0.56 w
BT /F1 12.0 Tf ET
BT /F2 20.0 Tf ET
0.0 0.4 0.8 rg
28.35 813.54 538.57 -28.34 re f 28.35 813.54 m 28.35 785.19 l S 28.35 813.54 m 566.92 813.54 l S 566.92 813.54 m 566.92 785.19 l S 28.35 785.19 m 566.92 785.19 l S q 1.0 1.0 1.0 rg BT 190.95 793.36 Td (Informe Liquidaciones) Tj ET Q
BT /F2 9.0 Tf ET
q 0.0 g BT 31.18 768.32 Td (Fecha: 17-02-2016) Tj ET Q
28.35 728.50 m 28.35 700.15 l S 28.35 728.50 m 170.08 728.50 l S 28.35 700.15 m 170.08 700.15 l S q 0.0 g BT 115.74 711.62 Td (Devolucion:) Tj ET Q
170.08 728.50 m 566.92 728.50 l S 566.92 728.50 m 566.92 700.15 l S 170.08 700.15 m 566.92 700.15 l S 
28.35 697.31 m 28.35 668.97 l S 28.35 697.31 m 396.85 697.31 l S q 0.0 g BT 304.99 680.44 Td (Cantidad de Primas  ) Tj ET Q
396.85 697.31 m 566.92 697.31 l S 566.92 697.31 m 566.92 668.97 l S q 0.0 g BT 399.68 680.44 Td (  Monto Recaudado) Tj ET Q
28.35 668.97 m 28.35 640.62 l S q 0.0 g BT 31.18 652.09 Td (  Recaudado Tarjeta Ripley) Tj ET Q
q 0.0 g BT 389.01 652.09 Td (  ) Tj ET Q
566.92 668.97 m 566.92 640.62 l S q 0.0 g BT 399.68 652.09 Td (  ) Tj ET Q
28.35 640.62 m 28.35 612.28 l S q 0.0 g BT 31.18 623.75 Td (  Recaudado OMP) Tj ET Q
q 0.0 g BT 389.01 623.75 Td (  ) Tj ET Q
566.92 640.62 m 566.92 612.28 l S q 0.0 g BT 399.68 623.75 Td (  ) Tj ET Q
28.35 612.28 m 28.35 583.93 l S 28.35 583.93 m 396.85 583.93 l S q 0.0 g BT 31.18 595.40 Td (  Devoluciones no Pago Mes Anterior:) Tj ET Q
566.92 612.28 m 566.92 583.93 l S 396.85 583.93 m 566.92 583.93 l S q 0.0 g BT 399.68 595.40 Td (  ) Tj ET Q
28.35 578.26 m 28.35 549.91 l S 28.35 578.26 m 396.85 578.26 l S 28.35 549.91 m 396.85 549.91 l S q 0.0 g BT 313.50 561.39 Td (Total Recaudado:  ) Tj ET Q
396.85 578.26 m 566.92 578.26 l S 566.92 578.26 m 566.92 549.91 l S 396.85 549.91 m 566.92 549.91 l S q 0.0 g BT 399.68 561.39 Td (  ) Tj ET Q
BT /F1 8.0 Tf ET
q 0.0 g BT 31.18 526.25 Td (Comentarios) Tj ET Q
BT /F1 9.0 Tf ET
28.35 521.57 m 28.35 408.18 l S 28.35 521.57 m 566.92 521.57 l S 566.92 521.57 m 566.92 408.18 l S 28.35 408.18 m 566.92 408.18 l S 
BT /F2 9.0 Tf ET
q 0.0 g BT 67.93 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 252.18 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 429.34 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 86.46 185.80 Td (some guy) Tj ET Q
q 0.0 g BT 260.96 185.80 Td (some guy) Tj ET Q
q 0.0 g BT 447.62 185.80 Td (some guy) Tj ET Q

endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
6 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
>>
/XObject <<
>>
>>
endobj
7 0 obj
<<
/Producer (PL_FPDF 0.9.3 portage pour Laclasse.com par P.G. Levallois de la version 1.53 de PHP/FPDF d'Olivier Plathey.)
/Title (Informe Liquidaciones a Companias)
/Author ()
/Creator ()
/CreationDate (D:20160217160747)
>>
endobj
8 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 9
0000000000 65535 f 
0000006086 00000 n 
0000006370 00000 n 
0000003557 00000 n 
0000003635 00000 n 
0000006173 00000 n 
0000006269 00000 n 
0000006484 00000 n 
0000006737 00000 n 
trailer
<<
/Size 9
/Root 8 0 R
/Info 7 0 R
>>
startxref
6840
%%EOF
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Length 2401>>
stream
2 J
0.56 w
BT /F1 12.0 Tf ET
BT /F2 20.0 Tf ET
0.0 0.4 0.8 rg
28.35 813.54 538.57 -28.34 re f 28.35 813.54 m 28.35 785.19 l S 28.35 813.54 m 566.92 813.54 l S 566.92 813.54 m 566.92 785.19 l S 28.35 785.19 m 566.92 785.19 l S q 1.0 1.0 1.0 rg BT 190.95 793.36 Td (Informe Liquidaciones) Tj ET Q
BT /F2 9.0 Tf ET
q 0.0 g BT 31.18 768.32 Td (Fecha: 17-02-2016) Tj ET Q
28.35 728.50 m 28.35 700.15 l S 28.35 728.50 m 170.08 728.50 l S 28.35 700.15 m 170.08 700.15 l S q 0.0 g BT 115.74 711.62 Td (Devolucion:) Tj ET Q
170.08 728.50 m 566.92 728.50 l S 566.92 728.50 m 566.92 700.15 l S 170.08 700.15 m 566.92 700.15 l S 
28.35 697.31 m 28.35 668.97 l S 28.35 697.31 m 396.85 697.31 l S q 0.0 g BT 304.99 680.44 Td (Cantidad de Primas  ) Tj ET Q
396.85 697.31 m 566.92 697.31 l S 566.92 697.31 m 566.92 668.97 l S q 0.0 g BT 399.68 680.44 Td (  Monto Recaudado) Tj ET Q
28.35 668.97 m 28.35 640.62 l S q 0.0 g BT 31.18 652.09 Td (  Recaudado Tarjeta Ripley) Tj ET Q
q 0.0 g BT 389.01 652.09 Td (  ) Tj ET Q
566.92 668.97 m 566.92 640.62 l S q 0.0 g BT 399.68 652.09 Td (  ) Tj ET Q
28.35 640.62 m 28.35 612.28 l S q 0.0 g BT 31.18 623.75 Td (  Recaudado OMP) Tj ET Q
q 0.0 g BT 389.01 623.75 Td (  ) Tj ET Q
566.92 640.62 m 566.92 612.28 l S q 0.0 g BT 399.68 623.75 Td (  ) Tj ET Q
28.35 612.28 m 28.35 583.93 l S 28.35 583.93 m 396.85 583.93 l S q 0.0 g BT 31.18 595.40 Td (  Devoluciones no Pago Mes Anterior:) Tj ET Q
566.92 612.28 m 566.92 583.93 l S 396.85 583.93 m 566.92 583.93 l S q 0.0 g BT 399.68 595.40 Td (  ) Tj ET Q
28.35 578.26 m 28.35 549.91 l S 28.35 578.26 m 396.85 578.26 l S 28.35 549.91 m 396.85 549.91 l S q 0.0 g BT 313.50 561.39 Td (Total Recaudado:  ) Tj ET Q
396.85 578.26 m 566.92 578.26 l S 566.92 578.26 m 566.92 549.91 l S 396.85 549.91 m 566.92 549.91 l S q 0.0 g BT 399.68 561.39 Td (  ) Tj ET Q
BT /F1 8.0 Tf ET
q 0.0 g BT 31.18 526.25 Td (Comentarios) Tj ET Q
BT /F1 9.0 Tf ET
28.35 521.57 m 28.35 408.18 l S 28.35 521.57 m 566.92 521.57 l S 566.92 521.57 m 566.92 408.18 l S 28.35 408.18 m 566.92 408.18 l S 
BT /F2 9.0 Tf ET
q 0.0 g BT 67.93 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 252.18 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 429.34 199.97 Td (_____________________) Tj ET Q
q 0.0 g BT 86.46 185.80 Td (some guy) Tj ET Q
q 0.0 g BT 260.96 185.80 Td (some guy) Tj ET Q
q 0.0 g BT 447.62 185.80 Td (some guy) Tj ET Q

endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
6 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
/F2 6 0 R
>>
/XObject <<
>>
>>
endobj
7 0 obj
<<
/Producer (PL_FPDF 0.9.3 portage pour Laclasse.com par P.G. Levallois de la version 1.53 de PHP/FPDF d'Olivier Plathey.)
/Title (Informe Liquidaciones a Companias)
/Author ()
/Creator ()
/CreationDate (D:20160217160748)
>>
endobj
8 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 9
0000000000 65535 f 
0000009634 00000 n 
0000009918 00000 n 
0000007105 00000 n 
0000007183 00000 n 
0000009721 00000 n 
0000009817 00000 n 
0000010032 00000 n 
0000010285 00000 n 
trailer
<<
/Size 9
/Root 8 0 R
/Info 7 0 R
>>
startxref
10388
%%EOF

Но файл в порядке:

введите описание изображения здесь

1 ответ

После непродолжительного исследования я ничего не смог найти, поэтому создание "патча" может сработать в этом случае:

--some code!
elsif (myDest = 'F') then
    -- DFVD -- Enviar a directorio
    -- Content Restriction
    v_len := 1;

    for i in pdfDoc.first..pdfDoc.last loop
        v_clob := to_clob(pdfDoc(i));
        if v_clob is not null then
            v_in := 1;
            v_out := 1;
            v_lang := 0;
            v_warning := 0;
            v_len := dbms_lob.getlength(v_clob);

            dbms_lob.convertToBlob(v_blob, v_clob, v_len, v_in, v_out, dbms_lob.default_csid, v_lang, v_warning);


            dbms_lob.append(v_doc, dbms_lob.substr(v_blob, v_len));   
        end if;
    end loop;

    //CHECK IF FILE EXISTS
    begin
        l_file := UTL_FILE.fopen('FTP_DIR',myName,'r');
        if UTL_FILE.is_open(l_file) then
            UTL_FILE.fclose(l_file);
        end if;     
    exception
        when others then
            NULL;
    end; 
    //CHECK IF FILE EXISTS

    l_blob_len := DBMS_LOB.getlength(v_doc);
    l_file := UTL_FILE.fopen('FTP_DIR',myName,'w', 32767);

    WHILE l_pos < l_blob_len LOOP
        DBMS_LOB.read(v_doc, l_amount, l_pos, l_buffer);
        UTL_FILE.put_raw(l_file, l_buffer, TRUE);
        l_pos := l_pos + l_amount;
    END LOOP;

    UTL_FILE.fclose(l_file);
else
--some code!

Теперь процедура Проверьте, существует ли файл и, если существует, "освобождает" файл, чтобы гарантировать создание нового.

Другие вопросы по тегам