我用DBMS_LOB包里的GETLENGTH()函数获取CLOB类型的长度,, 最大只返回了 18341 数值... 但实际上我的字符串不至这么多的,我跟踪看过,,字符串被截断了,,怎么会事啊...???????? 其他向DBMS_LOB.SUBSTR()函数都没有截断..... 不可能 GETLENGTH() 的最大上限值就是18341 吧????????????
调试欢乐多
CREATE TABLE aaa(a CLOB);
INSERT INTO aaa VALUES('1234567890');
SELECT dbms_lob.getlength(a) FROM aaa;
DECLARE
l_v VARCHAR2(4000);
BEGIN
FOR i IN 1..15 LOOP
UPDATE aaa SET a=a||a;
END LOOP;
END;
/
SELECT dbms_lob.getlength(a) FROM aaa;
--返回327680
(
v_MainDataList IN VARCHAR2 DEFAULT NULL ,
IN_ListDataList IN CLOB DEFAULT NULL ,
......
......
)
AS
v_ListDataList :CLOB;
BEGIN
v_ListDataList := DBMS_LOB.SUBSTR(v_ListDataList , DBMS_LOB.GETLENGTH(v_ListDataList , 1 );
INSERT TESTAAA (A) VALUES (v_ListDataList);
COMMIT;
END;/*如果
v_ListDataList := DBMS_LOB.SUBSTR(v_ListDataList , DBMS_LOB.GETLENGTH(v_ListDataList , 1 );
换成
v_ListDataList := DBMS_LOB.SUBSTR(v_ListDataList , 30000 , 1 );
保存在TESTAAA 表 A 中的字符串就是完整的。。
*/
应该是
v_ListDataList := DBMS_LOB.SUBSTR(v_ListDataList , DBMS_LOB.GETLENGTH(v_ListDataList), 1 );