O problema é que você não pode colocar um bloco de texto tão grande dentro de um bloco PLSQL.
Veja este exemplo:
Selecionar tudo
declare
t clob;
begin
t:= lpad('1', 4000, '1');
t:=t||lpad('2', 4000, '2');
t:=t||lpad('3', 4000, '3');
t:=t||lpad('4', 4000, '4');
t:=t||lpad('5', 4000, '5');
t:=t||lpad('6', 4000, '6');
t:=t||lpad('7', 4000, '7');
t:=t||lpad('8', 4000, '8');
t:=t||lpad('9', 4000, '9');
t:=t||lpad('0', 4000, '0');
--insert com variavel
insert into thomas values (3, t );
commit;
end;
Veja como ele insreiu 40 mil caracteres:
Selecionar tudo
SQL> select a.*, length(a.c) from thomas a;
N C LENGTH(A.C)
---------- --------------------------------------- -----------
1 teste1 24
teste2
teste3
2 teste1 26
teste 2
teste 3
3 111111111111111111111111111111111111111 40000
SQL>
Em resumo, acredito que você vai ter que quebrar em blocos menores esse seu super texto.
Ou coloca a informação dentro de uma tabela.
É uma idéia.