Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak uzyskać BLOB z pliku w PL/SQL?

Poniżej podaję przykład funkcji, aby pobrać BLOB z pliku w PL/SQL.

Funkcja PL/SQL do pobierania BLOB z pliku

Poniższa funkcja odczyta plik i zwróci typ danych BLOB pliku. Funkcja GET_BLOB przyjmuje dwa parametry:(1) nazwę obiektu katalogu Oracle (2) nazwę pliku.

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;

Test

Załóżmy, że masz plik myimage.jpg w folderze C:\Pics, a następnie utwórz obiekt katalogu Oracle, na przykład MY_PICS dla folderu C:\Pics i wywołaj poniższą funkcję, przekazując nazwę katalogu MY_PICS i nazwę pliku myimage.jpg . Jeśli nie wiesz, jak utworzyć obiekt katalogu w Oracle, sprawdź ten link:Utwórz obiekt katalogu Oracle.

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

Teraz masz BLOB pliku myimage.jpg w zmiennej f_blob.

Zobacz też:

  • Jak wstawić plik do bazy danych 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. Czy istnieje odpowiednik Oracle SQL Server's OUTPUT INSERTED.*?

  2. Ustawianie strefy czasowej sesji za pomocą wiosennej wyroczni jdbc

  3. Czy dostawca OraOLEDB w .NET jest niewiarygodny w polach CLOB?

  4. Nazwy kolumn cytowania Oracle DB

  5. Najlepsze praktyki:zadania konserwacji i ulepszania dla Oracle Cloud