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?