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?