Не можете да получите достъп до локална директория от pl/sql. Ако използвате bfile, ще настроите директория (създайте директория) на сървъра, където работи Oracle, където ще трябва да поставите вашите изображения.
Ако искате да вмъкнете шепа изображения от вашата локална машина, ще ви трябва клиентско приложение, за да направите това. Можете да напишете своя собствена, но аз обикновено използвам Toad за това. В браузъра на схемата щракнете върху таблицата. Щракнете върху раздела с данни и натиснете знак +, за да добавите ред. Щракнете двукратно върху колоната BLOB и се отваря съветник. Крайната лява икона ще зареди изображение в петното:
SQL Developer има подобна функция. Вижте връзката „Зареждане“ по-долу:
Ако трябва да издърпате изображения по проводника, можете да го направите с помощта на pl/sql, но не е направо. Първо, ще трябва да настроите достъп до списъка с ACL (от съображения за сигурност), за да позволите на потребителя да прехвърли кабела. Вижте тази статия за повече информация относно настройката на ACL.
Ако приемем, че ACL е завършен, ще изтеглите изображението по следния начин:
declare
l_url varchar2(4000) := 'http://www.oracleimg.com/us/assets/12_c_navbnr.jpg';
l_http_request UTL_HTTP.req;
l_http_response UTL_HTTP.resp;
l_raw RAW(2000);
l_blob BLOB;
begin
-- Important: setup ACL access list first!
DBMS_LOB.createtemporary(l_blob, FALSE);
l_http_request := UTL_HTTP.begin_request(l_url);
l_http_response := UTL_HTTP.get_response(l_http_request);
-- Copy the response into the BLOB.
BEGIN
LOOP
UTL_HTTP.read_raw(l_http_response, l_raw, 2000);
DBMS_LOB.writeappend (l_blob, UTL_RAW.length(l_raw), l_raw);
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body THEN
UTL_HTTP.end_response(l_http_response);
END;
insert into my_pics (pic_id, pic) values (102, l_blob);
commit;
DBMS_LOB.freetemporary(l_blob);
end;
Надявам се това да помогне.