How to show multiple blob image in Oracle Apex RTF template

I have this query for a report I wanted, the thing is that I need to call 3 images from different fields of a table

SELECT
    LISTAGG(CAST(OBJETIVO_DEL_PROYECTO AS VARCHAR2(3999)), CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY CAST(OBJETIVO_DEL_PROYECTO AS VARCHAR2(3999))) AS OBJETIVO_DEL_PROYECTO,
    LISTAGG(CAST(ALCANCE AS VARCHAR2(3999)), CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY CAST(ALCANCE AS VARCHAR2(3999))) AS ALCANCE,
    LISTAGG(CAST(METODOLOGIA AS VARCHAR2(3999)), CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY CAST(METODOLOGIA AS VARCHAR2(3999))) AS METODOLOGIA,
    LISTAGG(INTEGRANTES_ROLES, CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY INTEGRANTES_ROLES) AS INTEGRANTES,
    LISTAGG(CAST(CONTEXTO AS VARCHAR2(3999)), CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY CAST(CONTEXTO AS VARCHAR2(3999))) AS DETALLE_CONTEXTO,
    LISTAGG(PDF2IMG(LINEA_DE_TIEMPO_IMAGEN)) WITHIN GROUP (ORDER BY LINEA_DE_TIEMPO_IMAGEN) AS IMAGE,
    LISTAGG(PDF2IMG(METODOLOGIA_IMG)) WITHIN GROUP (ORDER BY METODOLOGIA_IMG) AS IMAGE2,
    LISTAGG(PDF2IMG(ALCANCE_IMG)) WITHIN GROUP (ORDER BY ALCANCE_IMG) AS IMAGE3,
    LISTAGG(LINEA_DE_TIEMPO_TEXTO) WITHIN GROUP (ORDER BY LINEA_DE_TIEMPO_TEXTO) AS TIMELINE_TEXTO,
    ID_AUX
  FROM DETALLES_DE_OFERTA WHERE ID_AUX = 5 GROUP BY ID_AUX

The function I use to convert the blob to clob is this

create or replace function "PDF2IMG"(p_blob IN BLOB)
RETURN CLOB
IS
l_clob CLOB;
l_step PLS_INTEGER := 12000; -- make sure you set a multiple of 3 not higher than 24573
BEGIN
FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_blob) - 1 )/l_step) LOOP
l_clob := l_clob || UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(p_blob,l_step, i * l_step + 1)));
END LOOP;
RETURN l_clob;
END;
/

And I've got the image fields in the RTF set up with this:

<fo:instream-foreign-object content-type="image/jpg" height="3 in" width="4 in">
<xsl:value-of select="IMAGE"/>
</fo:instream-foreign-object>

For each of the images, but doing the sql query in apex it turns out that this error comes out: ORA-06502: PL/SQL: numeric or value error: character string buffer too small

And since I checked that the images that are on the page do not exceed the limit of 35kb, I really don't know how to follow from here

    LISTAGG(CAST(OBJETIVO_DEL_PROYECTO AS VARCHAR2(3999))) WITHIN GROUP (ORDER BY CAST(OBJETIVO_DEL_PROYECTO AS VARCHAR2(3999))) AS OBJETIVO_DEL_PROYECTO,
    LISTAGG(CAST(ALCANCE AS VARCHAR2(3999))) WITHIN GROUP (ORDER BY CAST(ALCANCE AS VARCHAR2(3999))) AS ALCANCE,
    LISTAGG(CAST(METODOLOGIA AS VARCHAR2(3999))) WITHIN GROUP (ORDER BY CAST(METODOLOGIA AS VARCHAR2(3999))) AS METODOLOGIA,
    LISTAGG(INTEGRANTES_ROLES, CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY INTEGRANTES_ROLES) AS INTEGRANTES,
    LISTAGG(CAST(CONTEXTO AS VARCHAR2(3999)), CHR(10) || CHR(9) || CHR(13)) WITHIN GROUP (ORDER BY CAST(CONTEXTO AS VARCHAR2(3999))) AS DETALLE_CONTEXTO,
    LISTAGG(PDF2IMG(LINEA_DE_TIEMPO_IMAGEN)) WITHIN GROUP (ORDER BY LINEA_DE_TIEMPO_IMAGEN) AS IMAGE,
    LISTAGG(PDF2IMG(ALCANCE_IMG)) WITHIN GROUP (ORDER BY ALCANCE_IMG) AS IMAGE_ALCANCE,
    LISTAGG(LINEA_DE_TIEMPO_TEXTO) WITHIN GROUP (ORDER BY LINEA_DE_TIEMPO_TEXTO) AS TIMELINE_TEXTO,
    ID_AUX
  FROM DETALLES_DE_OFERTA
  WHERE ID_AUX = 5 
  GROUP BY ID_AUX

the error changed to this: ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (current: 125072, maximum: 32767)

Upvotes: 0

Views: 148

Answers (0)

Related Questions