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

Làm việc với đối tượng BLOB trong Oracle

Kể từ UTL_ENCODE.BASE64_ENCODE hàm hoạt động trên RAW, nó sẽ hoạt động với BLOB lên đến 32767 byte trong PL/SQL hoặc 4000 byte trong SQL.

Nếu hình ảnh của bạn lớn hơn, bạn sẽ phải viết hàm của riêng mình. Đây là một ví dụ:

CREATE OR REPLACE FUNCTION base64_encode_blob (p BLOB) RETURN BLOB IS
   l_raw    RAW(24573);
   l_base64 RAW(32767);
   l_result BLOB;
   l_offset NUMBER := 1;
   l_amount NUMBER := 24573;
BEGIN
   DBMS_LOB.createtemporary(l_result, FALSE);
   DBMS_LOB.open(l_result, DBMS_LOB.lob_readwrite);
   LOOP
      DBMS_LOB.read(p, l_amount, l_offset, l_raw);
      l_offset := l_offset + l_amount;
      l_base64 := utl_encode.base64_encode(l_raw);
      DBMS_LOB.writeappend(l_result, utl_raw.length(l_base64), l_base64);
   END LOOP;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      RETURN l_result;
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật cột dựa trên bản ghi trước đó

  2. Sự khác biệt giữa một người dùng và một lược đồ trong Oracle?

  3. Làm thế nào để chọn một nhà cung cấp Oracle cho ứng dụng .Net?

  4. Danh sách các tham số NLS trong Cơ sở dữ liệu Oracle

  5. Khung dữ liệu R tới bảng Oracle SQL:Không thể cấp phát bộ nhớ