sql >> Database >  >> RDS >> Oracle

Afbeelding invoegen in BLOB Oracle 10g

U heeft geen toegang tot een lokale map vanuit pl/sql. Als u bfile gebruikt, stelt u een map in (directory maken) op de server waarop Oracle draait waar u uw afbeeldingen moet plaatsen.

Als u een handvol afbeeldingen van uw lokale computer wilt invoegen, heeft u hiervoor een app aan de clientzijde nodig. Je kunt je eigen schrijven, maar ik gebruik hiervoor meestal Toad. Klik in de schemabrowser op de tabel. Klik op het gegevenstabblad en druk op + teken om een ​​rij toe te voegen. Dubbelklik op de BLOB-kolom en er wordt een wizard geopend. Het uiterst linkse pictogram laadt een afbeelding in de blob:

SQL Developer heeft een vergelijkbare functie. Zie de link "Laden" hieronder:

Als u afbeeldingen over de draad moet trekken, kunt u dit doen met pl/sql, maar het is niet eenvoudig. Eerst moet u toegang tot de ACL-lijst instellen (om veiligheidsredenen) zodat een gebruiker de draad kan overnemen. Zie dit artikel voor meer informatie over ACL-configuratie.

Ervan uitgaande dat ACL voltooid is, zou je de afbeelding als volgt trekken:

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;

Ik hoop dat dat helpt.



  1. Hoe datetime te vergelijken met alleen datum in SQL Server

  2. Zoeken naar volledige woordovereenkomst in MySQL

  3. MySQL-lengte() versus char_length()

  4. De meest elegante manier om permutaties in SQL-server te genereren