Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn hình ảnh vào BLOB Oracle 10g

Bạn không thể truy cập thư mục cục bộ từ pl / sql. Nếu bạn sử dụng bfile, bạn sẽ thiết lập một thư mục (tạo thư mục) trên máy chủ nơi Oracle đang chạy, nơi bạn sẽ cần đặt hình ảnh của mình.

Nếu bạn muốn chèn một số ít hình ảnh từ máy cục bộ của mình, bạn sẽ cần một ứng dụng phía máy khách để thực hiện việc này. Bạn có thể viết của riêng bạn, nhưng tôi thường sử dụng Toad cho việc này. Trong trình duyệt giản đồ, hãy nhấp vào bảng. Nhấp vào tab dữ liệu và nhấn + dấu + để thêm một hàng. Nhấp đúp vào cột BLOB và một trình hướng dẫn sẽ mở ra. Biểu tượng ngoài cùng bên trái sẽ tải một hình ảnh vào blob:

SQL Developer có một tính năng tương tự. Xem liên kết "Tải" bên dưới:

Nếu bạn cần kéo hình ảnh qua dây, bạn có thể làm điều đó bằng cách sử dụng pl / sql, nhưng nó không thẳng về phía trước. Trước tiên, bạn sẽ cần thiết lập quyền truy cập danh sách ACL (vì lý do bảo mật) để cho phép người dùng kéo qua dây. Xem bài viết này để biết thêm về thiết lập ACL.

Giả sử ACL đã hoàn tất, bạn sẽ kéo hình ảnh như sau:

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;

Hy vọng điều đó sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để gọi một Thủ tục được lưu trữ bên trong một gói oracle với Entity Framework?

  2. Thời lượng của dữ liệu trong bảng Tạm thời chung?

  3. Khi nào hoặc Tại sao nên sử dụng ĐẶT ĐỊNH TẮT trong Cơ sở dữ liệu Oracle

  4. làm thế nào để khai báo% ROWTYPE của một biến SYS_REFCURSOR được nhập yếu?

  5. cách tìm chỉ mục trên bảng trong oracle