Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie bekomme ich BLOB aus einer Datei in PL/SQL?

Unten gebe ich ein Funktionsbeispiel, um das BLOB aus einer Datei in PL/SQL zu erhalten.

PL/SQL-Funktion zum Abrufen von BLOB aus einer Datei

Die folgende Funktion liest eine Datei und gibt den BLOB-Datentyp der Datei zurück. Die Funktion GET_BLOB benötigt zwei Parameter:(1) Name des Oracle-Verzeichnisobjekts (2) Dateiname.

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

Angenommen, Sie haben eine Datei myimage.jpg im Ordner C:\Pics, erstellen Sie dann ein Oracle-Verzeichnisobjekt, z. B. MY_PICS für den Ordner C:\Pics, und rufen Sie die folgende Funktion auf, indem Sie den Verzeichnisnamen MY_PICS und den Dateinamen myimage.jpg übergeben . Wenn Sie nicht wissen, wie Sie ein Verzeichnisobjekt in Oracle erstellen, überprüfen Sie diesen Link:Oracle-Verzeichnisobjekt erstellen.

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

Jetzt haben Sie das BLOB der Datei myimage.jpg in der Variablen f_blob.

Siehe auch:

  • Wie füge ich eine Datei in die Oracle-Datenbank ein?