The fact that your data is getting truncated at 32000 characters (probably actually 32767) means you have some intermediate VARCHAR2
. Other than that, there's not enough information here.
Once you get your base64 encoded data, to display it on an Apex page, the easiest way to do that is with a PL/SQL region and the htp
package. None of the native htp
functions support CLOBs, so you will have to output it in chunks. Something like this:
i:= 1;
loop
l_chunk := dbms_lob.substr( l_b64_clob, l_chunk_size, i );
exit when l_chunk is null;
htp.prn( l_chunk );
i := i + l_chunk_size;
end loop;
I suggest you write a reusable procedure to do this.