Tem
27
2020

BLOB objesinin CLOB objesine dönüştürülmesi

Merhaba,,

ihtiyaçlarımız dahilinde * BLOB (binary large object) formatında veri yapısına sahip objeyi * CLOB (character large object) formatına dönüştürmemizi sağlayan workarround fonksiyon aşağıdaki gibidir.

 
 
FUNCTION b2c (blob_in IN BLOB)
      RETURN CLOB
   AS
      v_clob      CLOB;
      v_varchar   VARCHAR2 (32767);                                   --> 32767
      v_start     PLS_INTEGER := 1;
      v_buffer    PLS_INTEGER := 10000;                               --> 32767
   BEGIN
      DBMS_LOB.createtemporary (v_clob, TRUE);
 
 
      IF v_buffer > DBMS_LOB.getlength (blob_in)
      THEN
         v_buffer := DBMS_LOB.getlength (blob_in);
      END IF;
 
      FOR i IN 1 .. CEIL (DBMS_LOB.getlength (blob_in) / v_buffer)
      LOOP
         v_varchar :=
            UTL_RAW.cast_to_varchar2 (
               DBMS_LOB.SUBSTR (blob_in, v_buffer, v_start));
         DBMS_LOB.writeappend (v_clob, LENGTH (v_varchar), v_varchar);
         v_start := v_start + v_buffer;
      END LOOP;
 
      RETURN v_clob;
   END b2c;

* BLOB : 4GB ‘ a kadar binary formatında veri tutan veri yapısı.
* CLOB : 4GB ‘ a kadar karakter formatında veri tutan veri yapısı.

Mustafa Korkmaz


Yorum yapın

*