Poniżej podaję przykład funkcji, aby pobrać BLOB z pliku w PL/SQL.
Funkcja PL/SQL do pobierania BLOB z pliku
Poniższa funkcja odczyta plik i zwróci typ danych BLOB pliku. Funkcja GET_BLOB przyjmuje dwa parametry:(1) nazwę obiektu katalogu Oracle (2) nazwę pliku.
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
Załóżmy, że masz plik myimage.jpg w folderze C:\Pics, a następnie utwórz obiekt katalogu Oracle, na przykład MY_PICS dla folderu C:\Pics i wywołaj poniższą funkcję, przekazując nazwę katalogu MY_PICS i nazwę pliku myimage.jpg . Jeśli nie wiesz, jak utworzyć obiekt katalogu w Oracle, sprawdź ten link:Utwórz obiekt katalogu Oracle.
DECLARE f_blob BLOB; BEGIN f_blob := get_blob ('MY_PICS', 'myimage.jpg'); END;
Teraz masz BLOB pliku myimage.jpg w zmiennej f_blob.
Zobacz też:
- Jak wstawić plik do bazy danych Oracle?