Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Contoh APEX_ZIP

Di Oracle 12c dan seterusnya, di mana Oracle Apex secara default diinstal, Anda dapat menggunakan APEX_ZIP Paket PL/SQL untuk meng-zip file. Jadi di sini saya memberikan beberapa Oracle APEX_ZIP contoh:

Contoh APEX_ZIP Oracle

Kode PL/SQL berikut mendapatkan file (BLOB ) dari tabel dan zip, dan memberi Anda BLOB final terakhir yang memiliki semua file yang Anda tambahkan.

declare
   b_zip_file blob;

   cursor c_files
    is
    select file_name,
    file_content
    from emp_files
       where empno = 7894;

begin
   for c in c_files 
   loop
      -- adds the each blob to b_zip_file blob one by one
      apex_zip.add_file (
      p_zipped_blob => b_zip_file,
      p_file_name => c.file_name,
      p_content => c.file_content );
   end loop;

   -- finalizes the blob
   apex_zip.finish (
     p_zipped_blob => b_zip_file );

end;

Anda dapat melihat pada kode di atas bahwa pada akhirnya, Anda akan mendapatkan BLOB terakhir yang selanjutnya dapat Anda simpan dalam tabel atau kirimkan ke prosedur atau tulis file di server.

Contoh berikut adalah tambahan dari kode di atas. Setelah zip file, itu akan menulis file zip ke server.

Zip File menggunakan paket APEX_ZIP dan Tulis ke Server

Untuk menulis file di server, Anda memerlukan objek Direktori Oracle. Di bawah ini adalah contoh, cara membuat objek direktori di Oracle yang menunjuk ke direktori di server.

Create or Replace directory my_dir as '/your/server/path';

Setelah membuat direktori, Anda dapat menulis file zip seperti yang ditunjukkan pada contoh di bawah ini:

declare
   b_zip_file blob;

   -- variables for writing the files
   l_file       UTL_FILE.file_type;
   l_buffer     RAW (32767);
   l_amount     BINARY_INTEGER := 32767;
   l_pos        INTEGER := 1;
   l_blob_len   INTEGER;
   -- end variable declaration for file
   cursor c_files
    is
    select file_name,
    file_content
    from emp_files
       where empno = 7894;
begin
   for c in c_files 
   loop
      -- adds the each blob to b_zip_file blob one by one
      apex_zip.add_file (
      p_zipped_blob => b_zip_file,
      p_file_name => c.file_name,
      p_content => c.file_content );
   end loop;

   -- finalizes the blob
   apex_zip.finish (
     p_zipped_blob => b_zip_file );
   
   -- write the file
   l_blob_len := DBMS_LOB.getlength (b_zip_file);

   l_file :=
      UTL_FILE.fopen ('MY_DIR',
                     'my_zip.zip',
                      'WB',
                      32767);

   WHILE l_pos < l_blob_len
   LOOP

      DBMS_LOB.read (b_zip_file,
                     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);
end;

Setelah menjalankan kode PL/SQL di atas, Anda akan menemukan file my_zip.zip di MY_DIR lokasi direktori di server.

Tutorial Terkait:

  • Bagaimana Cara Mendapatkan BLOB dari File di PL/SQL?
  • Bagaimana cara UNZIP File di PL/SQL?

Referensi:

  • Panduan Oracle APEX_ZIP

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memotong TABEL di Oracle

  2. Menyetel Pernyataan SQL di Pengembang SQL

  3. ORA-00979 bukan grup dengan ekspresi

  4. Oracle ORA-30004 saat menggunakan fungsi SYS_CONNECT_BY_PATH,

  5. Cara Menulis ke File CSV Menggunakan Oracle SQL*Plus