Du kan inte komma åt en lokal katalog från pl/sql. Om du använder bfile kommer du att sätta upp en katalog (skapa katalog) på servern där Oracle körs där du måste lägga dina bilder.
Om du vill infoga en handfull bilder från din lokala dator behöver du en app på klientsidan för att göra detta. Du kan skriva din egen, men jag använder vanligtvis Toad för detta. Klicka på tabellen i schemabläddraren. Klicka på datafliken och tryck på + för att lägga till en rad. Dubbelklicka på kolumnen BLOB och en guide öppnas. Den längst till vänster ikonen kommer att ladda en bild i blob:
SQL Developer har en liknande funktion. Se länken "Ladda" nedan:
Om du behöver dra bilder över tråden kan du göra det med pl/sql, men det är inte rakt fram. Först måste du ställa in åtkomst till ACL-listan (av säkerhetsskäl) så att en användare kan dra över kabeln. Se den här artikeln för mer om ACL-inställningar.
Förutsatt att ACL är klar, skulle du dra bilden så här:
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;
Hoppas det hjälper.