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

Bagaimana cara Menyimpan BLOB sebagai File di PL/SQL?

Berikut saya berikan contoh untuk menyimpan data BLOB sebagai file di PL/SQL. Data BLOB bisa Anda dapatkan dari tabel yang memiliki kolom BLOB, atau Anda bisa mendapatkannya dari file di disk.

Contoh Fungsi PL/SQL untuk Menyimpan BLOB sebagai File

Prosedur di bawah ini mengambil tiga argumen berikut:

  1. Nama Objek Direktori Oracle (sebagai i_dir).
  2. Simpan sebagai nama file (sebagai i_file).
  3. Data BLOB (sebagai i_blob).
CREATE OR REPLACE PROCEDURE blob_to_file (i_dir    IN VARCHAR2,
                                          i_file   IN VARCHAR2,
                                          i_blob   IN BLOB)
AS
   l_file       UTL_FILE.file_type;
   l_buffer     RAW (32767);
   l_amount     BINARY_INTEGER := 32767;
   l_pos        INTEGER := 1;
   l_blob_len   INTEGER;
BEGIN
   l_blob_len := DBMS_LOB.getlength (i_blob);

   l_file :=
      UTL_FILE.fopen (i_dir,
                      i_file,
                      'WB',
                      32767);

   WHILE l_pos < l_blob_len
   LOOP
      DBMS_LOB.read (i_blob,
                     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);
EXCEPTION
   WHEN OTHERS
   THEN
      IF UTL_FILE.is_open (l_file)
      THEN
         UTL_FILE.fclose (l_file);
      END IF;

      RAISE;
END blob_to_file;

Uji

Blok PL/SQL berikut akan memanggil prosedur di atas dengan melewatkan objek direktori Oracle, nama file, dan data BLOB. Untuk data BLOB, saya menggunakan fungsi GET_BLOB yang telah saya berikan contoh di posting blog saya sebelumnya:Get BLOB from a File in PL/SQL. Dalam kasus di bawah ini, ia akan mendapatkan data BLOB dari file myfile.jpg dari lokasi MY_DIR dan akan menyimpannya ke file abc.jpg di lokasi IMG_DIR.

DECLARE
   f_blob   BLOB;
BEGIN
   /* check the above mentioned link for get_blob function example */
   f_blob := get_blob ('MY_DIR', 'myfile.jpg');
   /* now pass the blob to blob_to_file procedure to save it as a file */
   blob_to_file ('IMG_DIR', 'abc.jpg', f_blob);
END;

Sekarang Anda dapat memeriksa lokasi direktori IMG_DIR untuk file yang dibuat melalui BLOB.

Lihat juga:

  • Bagaimana Cara Membuat Objek Direktori Oracle?
  • Pelajari cara Mengekstrak data BLOB dari Tabel Oracle menggunakan Toad

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa batas ukuran untuk argumen subprogram varchar2 PL/SQL di Oracle?

  2. SQL:bagaimana cara menggunakan UNION dan memesan dengan pilihan tertentu?

  3. Bagaimana cara mempercantik output yang berasal dari kueri SELECT di command prompt?

  4. SQL*Plus tidak menjalankan skrip SQL yang dilakukan oleh Pengembang SQL

  5. TO_TIMESTAMP_TZ() Fungsi di Oracle