Nemůžete přistupovat k místnímu adresáři z pl/sql. Pokud používáte bfile, nastavíte adresář (vytvoříte adresář) na serveru, kde běží Oracle, kam budete muset vkládat své obrázky.
Pokud chcete vložit několik obrázků z místního počítače, budete k tomu potřebovat aplikaci na straně klienta. Můžete si napsat svůj vlastní, ale já k tomu obvykle používám Toad. V prohlížeči schémat klikněte na tabulku. Klikněte na kartu Data a stisknutím znaménka + přidejte řádek. Poklepejte na sloupec BLOB a otevře se průvodce. Ikona zcela vlevo načte obrázek do objektu blob:
SQL Developer má podobnou funkci. Viz odkaz "Načíst" níže:
Pokud potřebujete přetáhnout obrázky přes drát, můžete to udělat pomocí pl/sql, ale není to přímo vpřed. Nejprve budete muset nastavit přístup k seznamu ACL (z bezpečnostních důvodů), aby uživatel mohl přetáhnout drát. Další informace o nastavení ACL naleznete v tomto článku.
Za předpokladu, že ACL je kompletní, vytáhnete obrázek takto:
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;
Doufám, že to pomůže.