Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите BLOB от файл в PL/SQL?

По-долу давам пример за функция за получаване на BLOB от файл в PL/SQL.

PL/SQL функция за получаване на BLOB от файл

Следната функция ще прочете файл и ще върне типа BLOB данни на файла. Функцията GET_BLOB приема два параметъра:(1) име на обект в директорията на Oracle (2) име на файл.

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;

Тест

Да предположим, че имате файл myimage.jpg в папка C:\Pics, след което създайте обект на директория на Oracle, например MY_PICS за папка C:\Pics и извикайте функцията по-долу, като подадете името на директорията MY_PICS и името на файла myimage.jpg . Ако не знаете как да създадете обект на директория в Oracle, проверете тази връзка:Създаване на обект от директория на Oracle.

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

Сега имате BLOB на файл myimage.jpg в променлива f_blob.

Вижте също:

  • Как да вмъкна файл в Oracle Database?
  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 – октомври 2020 г

  2. Как да проверя версията на JDK в Oracle?

  3. GROUP BY / объркване на агрегатната функция в SQL

  4. Как да шифровате парола в Oracle?

  5. Как да извика функция или съхранена процедура на Oracle, използвайки рамка за постоянство на пружината?