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?