我有一个向CLOB追加字符串的场景。我遇到的问题是,一旦CLOB达到一定大小,如果我试图向CLOB追加更多内容,就会出现ORA-06502:PL/SQL:numeric或value错误。我假设它的大小已经用完了,但我不知道如何克服这个问题(即指定如何使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;
谢谢
当您执行lp_linefeed i_string
时,它将隐式强制转换为varchar2
,这里的限制为32K。
这样做:
PROCEDURE lob_append(i_string IN VARCHAR2)
IS
BEGIN
dbms_lob.append(LP_xml_result,LP_LineFeed);
dbms_lob.append(LP_xml_result,i_string);
END lob_append;
关于打印到HTP的问题,前段时间我也遇到了同样的问题,下面是我的解决方案:
chunkSize CONSTANT INTEGER := 5000;
pos NUMBER;
BEGIN
IF LENGTH(CLOB_VAL) > chunkSize THEN
LOOP
Htp.prn(SUBSTR(CLOB_VAL, pos, chunkSize));
pos := pos + chunkSize;
EXIT WHEN pos > LENGTH(CLOB_VAL);
END LOOP;
ELSE
Htp.prn(CLOB_VAL);
END IF;
正如您所知,由于Oracle11g不支持json,我使用CLOB创建json数据,因为varchar2(32767)大小,但此时我得到了ORA-06502:PL/SQL:numeric或value错误。同时,数据大小为68075。为什么我得到错误,尽管Clob是支持4 gb的数据?
我在执行触发器时遇到以下错误: 请说明问题的原因。 编辑 数据类型:
我实现了一个返回clob数据类型的函数,我希望在DBMS输出中打印结果。不幸的是,我得到了ORA-06502:PL/SQL:numeric或value错误,我认为这是由于dbms_output的大小造成的。 这是密码。 这里有一些东西可以帮助您理解这个问题 1)添加了以下内容来设置缓冲区的大小不受限制,但不起作用… 3)我可以通过执行以下操作来解决这个问题,但我认为这不是一个好的解决方案,因为它执
我得到了 ORA-06502:PL/SQL:以下代码中出现数值或值错误: