Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Praca z obiektem BLOB w Oracle

Od UTL_ENCODE.BASE64_ENCODE funkcja działa na plikach RAW, będzie działać z BLOBami do 32767 bajtów w PL/SQL lub 4000 bajtów w SQL.

Jeśli twoje obrazy są większe, będziesz musiał napisać własną funkcję. Oto przykład:

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. Konwertuj dane wyjściowe zapytania Oracle na json (Oracle / NodeJS)

  2. Jak mogę połączyć się z bazą danych Oracle jako sysdba za pomocą bltoolkit?

  3. Migracja Java 11 - createConnectionBuilder() z PoolDataSourceImpl koliduje z createConnectionBuilder() z javax.sql.DataSource

  4. Cykl wykryty podczas wykonywania zapytania rekurencyjnego

  5. Jak uzyskać nazwę dnia z daty w Oracle?