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

Bagaimana Mendapatkan BLOB dari File di PL/SQL?

Di bawah ini saya berikan contoh fungsi untuk mendapatkan BLOB dari file di PL/SQL.

Fungsi PL/SQL untuk Mendapatkan BLOB dari File

Fungsi berikut akan membaca file dan akan mengembalikan tipe data BLOB dari file tersebut. Fungsi GET_BLOB mengambil dua parameter:(1) nama objek direktori Oracle (2) nama file.

CREATE OR REPLACE FUNCTION get_blob (i_dir IN VARCHAR2, i_file IN VARCHAR2)
   RETURN BLOB
AS
   l_bfile   BFILE;
   l_blob    BLOB;
BEGIN
   DBMS_LOB.createtemporary (l_blob, FALSE);
   l_bfile := BFILENAME (i_dir, i_file);
   DBMS_LOB.fileopen (l_bfile, DBMS_LOB.file_readonly);
   DBMS_LOB.loadfromfile (l_blob, l_bfile, DBMS_LOB.getlength (l_bfile));
   DBMS_LOB.fileclose (l_bfile);

   RETURN l_blob;
EXCEPTION
   WHEN OTHERS
   THEN
      IF DBMS_LOB.fileisopen (l_bfile) = 1
      THEN
         DBMS_LOB.fileclose (l_bfile);
      END IF;

      DBMS_LOB.freetemporary (l_blob);
      RAISE;
END get_blob;

Uji

Misalkan Anda memiliki file myimage.jpg di folder C:\Pics, lalu buat objek direktori Oracle, misalnya, MY_PICS untuk folder C:\Pics dan panggil fungsi di bawah ini dengan meneruskan nama direktori MY_PICS dan nama file myimage.jpg . Jika Anda tidak tahu cara membuat objek direktori di Oracle, periksa tautan ini:Buat Objek Direktori Oracle.

DECLARE
   f_blob   BLOB;
BEGIN
   f_blob := get_blob ('MY_PICS', 'myimage.jpg');
END;

Sekarang Anda memiliki BLOB dari file myimage.jpg dalam variabel f_blob.

Lihat juga:

  • Bagaimana Menyisipkan File di Database Oracle?

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ORA-12154:TNS:Tidak dapat menyelesaikan kesalahan nama layanan?

  2. ORACLE 11g case tidak sensitif secara default

  3. 2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Alfanumerik di Oracle

  4. meneruskan nama tabel dan kolom secara dinamis menggunakan variabel bind

  5. CURRENT_TIMESTAMP dan SYSDATE berbeda di Oracle