逐行读取clob变量

Den*_*nis 1 sql oracle plsql clob

有一个值列表,我从shell获得输出.该列表每行包含一个"名称",如下所示.它有超过300行,预计会更长.

BeforeArchive_Field
BeforeArchive_Reservoir
BeforeArchive_Well
BeforeArchive_Wellbore
BeforeArchive_WellboreCompletion
BeforeArchive_WellboreContactInterval
ba_organization_part0
ba_organization_part2
Run Code Online (Sandbox Code Playgroud)

我需要将此列表传递给pl/sql过程,以便它可以解析它并操作每个单独的"名称".由于列表的长度,我想到创建一个存储过程,它将此列表作为CLOB参数.

这两个问题是:

这是处理列表的最佳方式(格式)吗?

如果是这样,有没有一种直接解析这个clob的地狱的方法?

我通过pl\sql 回答逐行阅读这个 阅读clob,但是在某些情况下,事情可能会更简单.

我不熟悉这种LOB格式,并希望得到任何帮助.

Emm*_*uel 7

对我来说这似乎是一个好主意:用clob调用一次存储过程并调用另一个用于处理单行的proc可以在应用服务器和数据库服务器之间保存一些I/O.

我有一个非常简单的程序来逐行拆分clob:

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, '.+');
Run Code Online (Sandbox Code Playgroud)

正如预期的那样:

    PATTERN
1   azertyuiop
2   qsdfghjklm
3   wxcvbn
Run Code Online (Sandbox Code Playgroud)

您可以在a中的第一个存储过程中使用此查询for line in ()来逐行调用第二个过程.