我需要将各种 CLOB 数据连接到一个 CLOB 字段中。
我有一个包含各种行的数据库,每行都包含一些字符字段(例如 BATCH_ID)和一个 CLOB(BATCH_BODY)。我不确定如何连接 CLOB 以使所有内容都成为一行。
最终目标是将所有 BATCH_ID 相同的行组合成一个带有单个 CLOB 文件的行,该 CLOB 文件由各种 BATCH_BODY 组成
CONCAT 似乎适用于 CLOB:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions026.htm
要在不截断的情况下使用超过 32K 的 CLOB,我需要这样的代码:
--ALL_XML := ALL_XML || SINGLE_XML;
--The above crashed on Oracle 11g with text beyond 32K, so...
lobLength := DBMS_LOB.GETLENGTH(SINGLE_XML);
FOR i IN 0..100 LOOP
offset := i * buffSize + 1;
EXIT WHEN SINGLE_XML IS NULL OR lobLength < offset;
-- fill the buffer with final data chunk to append to the lob
buffer := DBMS_LOB.SUBSTR(SINGLE_XML, buffSize, offset);
DBMS_LOB.APPEND(ALL_XML, TO_CLOB(buffer));
END LOOP;