Reputation: 1
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