По-долу давам пример за функция за получаване на BLOB от файл в PL/SQL.
PL/SQL функция за получаване на BLOB от файл
Следната функция ще прочете файл и ще върне типа BLOB данни на файла. Функцията GET_BLOB приема два параметъра:(1) име на обект в директорията на Oracle (2) име на файл.
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; Тест
Да предположим, че имате файл myimage.jpg в папка C:\Pics, след което създайте обект на директория на Oracle, например MY_PICS за папка C:\Pics и извикайте функцията по-долу, като подадете името на директорията MY_PICS и името на файла myimage.jpg . Ако не знаете как да създадете обект на директория в Oracle, проверете тази връзка:Създаване на обект от директория на Oracle.
DECLARE
f_blob BLOB;
BEGIN
f_blob := get_blob ('MY_PICS', 'myimage.jpg');
END; Сега имате BLOB на файл myimage.jpg в променлива f_blob.
Вижте също:
- Как да вмъкна файл в Oracle Database?