Oracle
 sql >> база данни >  >> RDS >> Oracle

Работа с BLOB обект в Oracle

Тъй като UTL_ENCODE.BASE64_ENCODE функцията работи на RAW, ще работи с BLOB до 32767 байта в PL/SQL или 4000 байта в SQL.

Ако вашите изображения са по-големи, ще трябва да напишете своя собствена функция. Ето един пример:

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. Преименуване на Oracle 11g. Гарантирано атомно?

  2. Как да инсталирате cx_Oracle на El Capitan

  3. Как да откриете лежащите в основата първични (или уникални) ключови колони от изглед на Oracle

  4. Използване на Substr с Instr за извличане на низ в Oracle

  5. ORA-04091 - Как мога да променя таблица, върху която се задейства тригер?