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?