По-долу давам пример за функция за получаване на 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?