【发布时间】:2014-03-27 04:55:13
【问题描述】:
我有一个场景,我将字符串附加到一个 clob。我遇到的问题是,一旦 CLOB 达到一定大小,如果我尝试将更多内容附加到 clob,我会得到 ORA-06502: PL/SQL: numeric or value 错误。我认为它的大小已经用完了,但我不知道如何解决这个问题(即指定如何使 clob 更大)。
谁能帮帮我。
这就是我声明我的 CLOB 的方式...
LP_xml_result CLOB;
DBMS_LOB.CREATETEMPORARY(
lob_loc => LP_xml_result
, cache => true
, dur => dbms_lob.call
);
DBMS_LOB.OPEN(
lob_loc => LP_xml_result
, open_mode => DBMS_LOB.LOB_READWRITE
);
然后我像这样插入它......
PROCEDURE lob_append(i_string IN VARCHAR2)
IS
BEGIN
dbms_lob.append(LP_xml_result,LP_LineFeed || i_string);
END lob_append;
谢谢
【问题讨论】:
-
它会超过 4GB 吗?
-
从 Oracle 11 开始,LOB 可以最大为
(4 GB - 1) * DB_BLOCK_SIZE,即 8TB 到 128TB。 4GB 是 Oracle 10 之前的限制 -
我查看了 Oracle 文档,发现了两个可能的问题。当您打开一个 LOB 时,您还必须关闭它。但是,打开/关闭 LOB 不是强制性的 - 无需尝试即可。而不是创建一个临时 LOB 尝试
LP_xml_result := EMPTY_CLOB()