Wydaje mi się, że to dobry pomysł:jednokrotne wywołanie przechowywanej procedury za pomocą clob i wywołanie tej jednej drugiej procedury przeznaczonej do obsługi pojedynczej linii może zaoszczędzić trochę I/O między twoim serwerem aplikacyjnym a serwerem DB.
Mam bardzo prostą procedurę dzielenia linii kloba po linii:
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, '.+');
co daje, zgodnie z oczekiwaniami:
PATTERN
1 azertyuiop
2 qsdfghjklm
3 wxcvbn
Możesz użyć tego zapytania w swojej pierwszej zapisanej procedurze wewnątrz for line in ()
aby zadzwonić do drugiej procedury linia po linii.