sql >> Databáze >  >> RDS >> Oracle

Vložení obrázku do BLOB Oracle 10g

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.



  1. Jak ovládat selhání replikace pro MySQL a MariaDB

  2. Nelze vytvořit instanci chyby poskytovatele OLE DB jako uživatel ověřování systému Windows

  3. Jak nastavit pojmenovaná časová pásma v MariaDB

  4. Porovnání vysoké dostupnosti databáze – replikace MySQL / MariaDB vs Oracle Data Guard