Generer un CLOB a partir d'une table de VARCHAR2
Bonjour,
Je cherche a stocker une page HTML (rapport ASH) dans une colonne CLOB pour ensuite l'afficher dans un pop up dans APEX.
Pour ce faire, j'ai cree une table temporaire dans laquelle j'insere le rapport :
Code:
1 2 3 4
| CREATE GLOBAL TEMPORARY TABLE gtt_report (OUTPUT VARCHAR2(4000)) ON COMMIT PRESERVE ROWS;
INSERT INTO gtt_report
SELECT * FROM TABLE(dbms_workload_repository.ash_report_html(1485633966, 1, SYSDATE-30/1440, SYSDATE-1/1440)); |
Ensuite, je tente de generer mon CLOB a partir de ma table de varchar2 :
Code:
CREATE TABLE test_clob (c_clob CLOB);
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
DECLARE
l_clob CLOB;
CURSOR output IS
SELECT output FROM gtt_report;
BEGIN
dbms_lob.createtemporary(l_clob, TRUE);
dbms_lob.open(l_clob, dbms_lob.lob_readwrite);
FOR OUTPUT_rec in output
LOOP
DBMS_LOB.writeappend(l_clob,LENGTH(OUTPUT_rec.OUTPUT),OUTPUT_rec.OUTPUT);
END LOOP;
dbms_lob.close(l_clob);
INSERT INTO test_clob (c_clob) VALUES (l_clob);
COMMIT;
dbms_lob.freetemporary(l_clob);
END; |
Cette methode fonctionne si je ne depasse pas le cache de 4000 caracteres. Apres j'obtiens cette erreur :
Citation:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.DBMS_LOB", line 1146
ORA-06512: at line 27
Je n'arrive pas bypasser cette limitation. Sauriez vous comment faire ?
(Si vous avez une methode plus simple pour stocker mon rapport ASH dans une table, je suis egallement preneur)