Nedan ger jag ett funktionsexempel för att hämta BLOB från en fil i PL/SQL.
PL/SQL-funktion för att hämta BLOB från en fil
Följande funktion läser en fil och returnerar filens BLOB-datatyp. Funktionen GET_BLOB tar två parametrar:(1) Oracle-katalogobjektets namn (2) filnamn.
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; Testa
Anta att du har en fil myimage.jpg i mappen C:\Pics, skapa sedan ett Oracle-katalogobjekt, till exempel MY_PICS för mappen C:\Pics och anropa funktionen nedan genom att skicka katalognamnet MY_PICS och filnamnet myimage.jpg . Om du inte vet hur man skapar ett katalogobjekt i Oracle, kolla denna länk:Skapa Oracle Directory Object.
DECLARE
f_blob BLOB;
BEGIN
f_blob := get_blob ('MY_PICS', 'myimage.jpg');
END; Nu har du BLOB för filen myimage.jpg i variabeln f_blob.
Se även:
- Hur infogar man en fil i Oracle Database?