pl/sqlからローカルディレクトリにアクセスすることはできません。 bfileを使用する場合は、Oracleが実行されているサーバー上に、イメージを配置する必要のあるディレクトリ(ディレクトリの作成)を設定します。
ローカルマシンから少数の画像を挿入する場合は、これを行うためにクライアント側のアプリが必要になります。あなたはあなた自身を書くことができます、しかし私は通常これのためにToadを使います。スキーマブラウザで、テーブルをクリックします。 [データ]タブをクリックし、+記号を押して行を追加します。 BLOB列をダブルクリックすると、ウィザードが開きます。左端のアイコンは画像をblobにロードします:
SQLDeveloperにも同様の機能があります。以下の「ロード」リンクを参照してください:
ワイヤを介してイメージをプルする必要がある場合は、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;
お役に立てば幸いです。