Me parece una buena idea:llamar a un proceso almacenado una vez con el clob y hacer que este llame al otro proceso dedicado a manejar una sola línea podría ahorrar algo de E/S entre su servidor de aplicación y el de la base de datos.
Tengo un procedimiento muy simple para dividir un clob línea por línea:
create table test (c clob);
insert into test (c) values (
'azertyuiop
qsdfghjklm
wxcvbn
');
select to_char(regexp_substr(test.c, '.+', 1, level)) pattern
from test
connect by level <= regexp_count(test.c, '.+');
que da, como se esperaba:
PATTERN
1 azertyuiop
2 qsdfghjklm
3 wxcvbn
Puede usar esta consulta en su primer proceso almacenado dentro de un for line in ()
para llamar a su segundo procedimiento línea por línea.